Example usage for org.apache.commons.lang3.mutable MutableDouble doubleValue

List of usage examples for org.apache.commons.lang3.mutable MutableDouble doubleValue

Introduction

In this page you can find the example usage for org.apache.commons.lang3.mutable MutableDouble doubleValue.

Prototype

@Override
public double doubleValue() 

Source Link

Document

Returns the value of this MutableDouble as a double.

Usage

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dTermCredits(View mSAProf, String InternalEntityStructure, String InternalAttribStructure,
        Integer GetOrSetFlag) {//from w w  w . j  a  v  a2 s  .  c om
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dAmount 
    double dAmount = 0.0;
    int RESULT = 0;
    double dTempDecimal_0 = 0.0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);

        //:dAmount = 0
        dAmount = 0;
        //:// Sum PeriodTransApplied where they credits, not charges.
        //:FOR EACH mSAProf2.PeriodTransApplied WHERE mSAProf2.PeriodSATransactionCode.Type = "R" 
        RESULT = SetCursorFirstEntity(mSAProf2, "PeriodTransApplied", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            if (CompareAttributeToString(mSAProf2, "PeriodSATransactionCode", "Type", "R") == 0) {
                //://WHERE mSAProf2.StudentAccountTransApplied.Amount > 0
                //:dAmount = dAmount + mSAProf2.PeriodTransApplied.Amount 
                {
                    MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                    GetDecimalFromAttribute(md_dTempDecimal_0, mSAProf2, "PeriodTransApplied", "Amount");
                    dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
                }
                dAmount = dAmount + dTempDecimal_0;
            }

            RESULT = SetCursorNextEntity(mSAProf2, "PeriodTransApplied", "");
        }

        //:END 
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dAmount, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dAmount, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.zencas.mDegTrk_Object.java

public int omDegTrk_AuditStudentCourses(View mDegTrk, View mStudenC_Orig) {
    zVIEW mStudenC = new zVIEW();
    //:VIEW mStudenCT   BASED ON LOD  mStudenC
    zVIEW mStudenCT = new zVIEW();
    //:VIEW mDegTrkC    BASED ON LOD  mDegTrk
    zVIEW mDegTrkC = new zVIEW();
    //:VIEW mDegTrkR    BASED ON LOD  mDegTrkR
    zVIEW mDegTrkR = new zVIEW();
    //:VIEW mStudent    REGISTERED AS mStudent
    zVIEW mStudent = new zVIEW();
    int RESULT = 0;
    //:VIEW mDegreeLST  BASED ON LOD  mDegree
    zVIEW mDegreeLST = new zVIEW();
    //:VIEW mUser       BASED ON LOD  mUser
    zVIEW mUser = new zVIEW();
    //:VIEW mCollegeLST BASED ON LOD  mCollege
    zVIEW mCollegeLST = new zVIEW();
    //:VIEW lTrnscpt    BASED ON LOD  lTrnscpt
    zVIEW lTrnscpt = new zVIEW();
    //:VIEW lTrnscptT   BASED ON LOD  lTrnscpt
    zVIEW lTrnscptT = new zVIEW();
    //:INTEGER       CourseID
    int CourseID = 0;
    //:INTEGER       CourseCount
    int CourseCount = 0;
    //:INTEGER       CourseTakenCount
    int CourseTakenCount = 0;
    //:INTEGER       CourseCompletedCount
    int CourseCompletedCount = 0;
    //:INTEGER       MinimumElectiveGrade
    int MinimumElectiveGrade = 0;
    //:INTEGER       Count
    int Count = 0;
    //:DECIMAL       CreditsTaken
    double CreditsTaken = 0.0;
    //:DECIMAL       CreditsCompleted
    double CreditsCompleted = 0.0;
    //:DECIMAL       GraduationCreditsEarned
    double GraduationCreditsEarned = 0.0;
    //:DECIMAL       MinCreditsTaken
    double MinCreditsTaken = 0.0;
    //:DECIMAL       MinCreditsCompleted
    double MinCreditsCompleted = 0.0;
    //:DECIMAL       MinCreditsRequired
    double MinCreditsRequired = 0.0;
    //:DECIMAL       FinalGrade
    double FinalGrade = 0.0;
    //:DECIMAL       TotalDegreeTrackCreditsTaken
    double TotalDegreeTrackCreditsTaken = 0.0;
    //:DECIMAL       TotalDegreeTrackCreditsEarned
    double TotalDegreeTrackCreditsEarned = 0.0;
    //:DECIMAL       MinimumGPA
    double MinimumGPA = 0.0;
    //:STRING ( 5 )  szCourseCount
    String szCourseCount = null;/*  w  w  w .ja v a2 s.c  o  m*/
    //:STRING ( 5 )  szCourseTakenCount
    String szCourseTakenCount = null;
    //:STRING ( 10 ) szCreditsNeeded
    String szCreditsNeeded = null;
    //:STRING ( 10 ) szCreditsTaken
    String szCreditsTaken = null;
    //:STRING ( 1 )  szCourseTakenFlag
    String szCourseTakenFlag = null;
    //:STRING ( 1 )  szCourseCompletedFlag
    String szCourseCompletedFlag = null;
    //:STRING ( 10 ) CourseNumber
    String CourseNumber = null;
    //:STRING ( 50 ) CourseTitle
    String CourseTitle = null;
    //:STRING ( 20 ) szFinalGradeString
    String szFinalGradeString = null;
    //:STRING ( 1 )  SubstituteFlag
    String SubstituteFlag = null;
    //:STRING ( 1 )  RepeatableForCreditFlag
    String RepeatableForCreditFlag = null;
    //:STRING ( 1 )  DevelopmentalFlag
    String DevelopmentalFlag = null;
    //:STRING ( 20 ) StudentStatus
    String StudentStatus = null;
    //:STRING ( 4 )  szWorkYear
    String szWorkYear = null;
    //:STRING ( 8 )  szWorkDate
    String szWorkDate = null;
    //:STRING ( 200 ) Msg
    String Msg = null;
    //:STRING ( 20 ) szCollegeType
    String szCollegeType = null;
    //:STRING ( 1 )  GradUndergradFlag
    String GradUndergradFlag = null;
    //:STRING ( 1 )  TransferGradUndergradFlag
    String TransferGradUndergradFlag = null;
    //:SHORT         nRC
    int nRC = 0;
    int lTempInteger_0 = 0;
    int lTempInteger_1 = 0;
    int lTempInteger_2 = 0;
    int lTempInteger_3 = 0;
    int lTempInteger_4 = 0;
    int lTempInteger_5 = 0;
    zVIEW vTempViewVar_0 = new zVIEW();
    int lTempInteger_6 = 0;
    int lTempInteger_7 = 0;
    int lTempInteger_8 = 0;
    int lTempInteger_9 = 0;
    int lTempInteger_10 = 0;
    int lTempInteger_11 = 0;
    int lTempInteger_12 = 0;
    zVIEW vTempViewVar_1 = new zVIEW();
    int lTempInteger_13 = 0;
    int lTempInteger_14 = 0;
    int lTempInteger_15 = 0;
    int lTempInteger_16 = 0;
    int lTempInteger_17 = 0;
    int lTempInteger_18 = 0;
    int lTempInteger_19 = 0;
    String szTempString_0 = null;
    int lTempInteger_20 = 0;
    String szTempString_1 = null;
    int lTempInteger_21 = 0;
    int lTempInteger_22 = 0;
    int lTempInteger_23 = 0;
    int lTempInteger_24 = 0;
    int lTempInteger_25 = 0;
    int lTempInteger_26 = 0;
    int lTempInteger_27 = 0;
    int lTempInteger_28 = 0;
    int lTempInteger_29 = 0;
    int lTempInteger_30 = 0;
    int lTempInteger_31 = 0;
    int lTempInteger_32 = 0;
    int lTempInteger_33 = 0;
    int lTempInteger_34 = 0;
    int lTempInteger_35 = 0;
    int lTempInteger_36 = 0;
    int lTempInteger_37 = 0;
    int lTempInteger_38 = 0;
    int lTempInteger_39 = 0;
    int lTempInteger_40 = 0;
    int lTempInteger_41 = 0;
    int lTempInteger_42 = 0;
    int lTempInteger_43 = 0;
    int lTempInteger_44 = 0;
    int lTempInteger_45 = 0;
    int lTempInteger_46 = 0;
    int lTempInteger_47 = 0;
    int lTempInteger_48 = 0;
    int lTempInteger_49 = 0;
    int lTempInteger_50 = 0;
    int lTempInteger_51 = 0;
    double dTempDecimal_0 = 0.0;
    double dTempDecimal_1 = 0.0;
    double dTempDecimal_2 = 0.0;
    String szTempString_2 = null;
    String szTempString_3 = null;
    double dTempDecimal_3 = 0.0;
    double dTempDecimal_4 = 0.0;
    double dTempDecimal_5 = 0.0;
    double dTempDecimal_6 = 0.0;
    int lTempInteger_52 = 0;
    String szTempString_4 = null;
    String szTempString_5 = null;
    double dTempDecimal_7 = 0.0;
    double dTempDecimal_8 = 0.0;
    double dTempDecimal_9 = 0.0;
    double dTempDecimal_10 = 0.0;
    double dTempDecimal_11 = 0.0;
    double dTempDecimal_12 = 0.0;
    int lTempInteger_53 = 0;
    String szTempString_6 = null;
    String szTempString_7 = null;
    int lTempInteger_54 = 0;
    String szTempString_8 = null;
    String szTempString_9 = null;
    String szTempString_10 = null;
    String szTempString_11 = null;
    double dTempDecimal_13 = 0.0;
    double dTempDecimal_14 = 0.0;
    double dTempDecimal_15 = 0.0;
    double dTempDecimal_16 = 0.0;
    String szTempString_12 = null;
    int lTempInteger_55 = 0;
    String szTempString_13 = null;
    String szTempString_14 = null;
    String szTempString_15 = null;
    double dTempDecimal_17 = 0.0;
    double dTempDecimal_18 = 0.0;
    double dTempDecimal_19 = 0.0;
    String szTempString_16 = null;
    double dTempDecimal_20 = 0.0;
    String szTempString_17 = null;
    int lTempInteger_56 = 0;
    int lTempInteger_57 = 0;
    String szTempString_18 = null;
    String szTempString_19 = null;
    int lTempInteger_58 = 0;
    int lTempInteger_59 = 0;
    int lTempInteger_60 = 0;
    String szTempString_20 = null;
    String szTempString_21 = null;
    int lTempInteger_61 = 0;
    int lTempInteger_62 = 0;
    String szTempString_22 = null;
    String szTempString_23 = null;
    int lTempInteger_63 = 0;
    int lTempInteger_64 = 0;
    int lTempInteger_65 = 0;
    int lTempInteger_66 = 0;
    double dTempDecimal_21 = 0.0;
    double dTempDecimal_22 = 0.0;

    RESULT = GetViewByName(mStudent, "mStudent", mDegTrk, zLEVEL_TASK);

    //:// Process the courses taken in mStudenC against the degree audit requirements of mDegTrk.
    //:// The results will be specified in the work attributes of mDegTrk.

    //:nRC = GetViewByName( mUser, "mUser", mDegTrk, zLEVEL_APPLICATION )
    nRC = GetViewByName(mUser, "mUser", mDegTrk, zLEVEL_APPLICATION);
    //:IF nRC < 0
    if (nRC < 0) {
        //:// Use task view in case we're running under Web.
        //:GetViewByName( mUser, "mUser", mDegTrk, zLEVEL_TASK )
        GetViewByName(mUser, "mUser", mDegTrk, zLEVEL_TASK);
    }

    //:END
    //:mDegTrk.DegreeTrack.wAuditorName = mUser.User.dFullNameLFM 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "wAuditorName", mUser, "User", "dFullNameLFM");

    //:// Build the Student data from view mStudent.
    //:IF mDegTrk.AuditedStudent EXISTS 
    lTempInteger_0 = CheckExistenceOfEntity(mDegTrk, "AuditedStudent");
    if (lTempInteger_0 == 0) {
        //:DELETE ENTITY mDegTrk.AuditedStudent  
        RESULT = DeleteEntity(mDegTrk, "AuditedStudent", zPOS_NEXT);
    }

    //:END
    //:CREATE ENTITY mDegTrk.AuditedStudent 
    RESULT = CreateEntity(mDegTrk, "AuditedStudent", zPOS_AFTER);
    //:mDegTrk.AuditedStudent.FullName               = mStudent.Person.dFullName
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "FullName", mStudent, "Person", "dFullName");
    //:mDegTrk.AuditedStudent.DegreeMajorName        = mStudent.DegreeMajor.Name 
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "DegreeMajorName", mStudent, "DegreeMajor", "Name");
    //:mDegTrk.AuditedStudent.DegreeMajorTrackName   = mStudent.MajorDegreeTrack.Name 
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "DegreeMajorTrackName", mStudent, "MajorDegreeTrack",
            "Name");
    //:mDegTrk.AuditedStudent.ClassificationAtAudit  = mStudent.Student.CurrentLevel 
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "ClassificationAtAudit", mStudent, "Student",
            "CurrentLevel");
    //:mDegTrk.AuditedStudent.ComprehensiveTestScore = mStudent.StudentMajorDegreeTrack.ComprehensiveTestScore 
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "ComprehensiveTestScore", mStudent,
            "StudentMajorDegreeTrack", "ComprehensiveTestScore");
    //:mDegTrk.AuditedStudent.eMailAddress           = mStudent.Student.eMailAddress
    SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "eMailAddress", mStudent, "Student", "eMailAddress");
    //:IF mStudent.DegreeTrackCollegeDegree EXISTS
    lTempInteger_1 = CheckExistenceOfEntity(mStudent, "DegreeTrackCollegeDegree");
    if (lTempInteger_1 == 0) {
        //:mDegTrk.AuditedStudent.DegreeTrackCollegeDegreeName = mStudent.DegreeTrackCollegeDegree.Name 
        SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "DegreeTrackCollegeDegreeName", mStudent,
                "DegreeTrackCollegeDegree", "Name");
    }

    //:END
    //:IF mStudent.Advisor EXISTS
    lTempInteger_2 = CheckExistenceOfEntity(mStudent, "Advisor");
    if (lTempInteger_2 == 0) {
        //:mDegTrk.AuditedStudent.StudentAdvisorShortName = mStudent.Advisor.ShortName 
        SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "StudentAdvisorShortName", mStudent, "Advisor",
                "ShortName");
    }

    //:END
    //:SET CURSOR FIRST mStudent.DegreeMinorCollege WITHIN mStudent.Student 
    //:           WHERE mStudent.DegreeMinorCollege.ID = mStudent.DegreeMajorCollege.ID 
    {
        MutableInt mi_lTempInteger_3 = new MutableInt(lTempInteger_3);
        GetIntegerFromAttribute(mi_lTempInteger_3, mStudent, "DegreeMajorCollege", "ID");
        lTempInteger_3 = mi_lTempInteger_3.intValue();
    }
    RESULT = mStudent.cursor("DegreeMinorCollege").setFirst("ID", lTempInteger_3, "Student").toInt();
    //:IF RESULT >= zCURSOR_SET
    if (RESULT >= zCURSOR_SET) {
        //:mDegTrk.AuditedStudent.DegreeMinorName = mStudent.DegreeMinor.Name 
        SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "DegreeMinorName", mStudent, "DegreeMinor",
                "Name");
    }

    //:END
    //:IF mStudent.DC_AnticipatedGraduationDate EXISTS
    lTempInteger_4 = CheckExistenceOfEntity(mStudent, "DC_AnticipatedGraduationDate");
    if (lTempInteger_4 == 0) {
        //:mDegTrk.AuditedStudent.AnticipatedGraduationDateName = mStudent.DC_AnticipatedGraduationDate.Name
        SetAttributeFromAttribute(mDegTrk, "AuditedStudent", "AnticipatedGraduationDateName", mStudent,
                "DC_AnticipatedGraduationDate", "Name");
    }

    //:END
    //: 

    //:// Activate the Transcript object, which is used for displaying Earned Credits, GPA, etc.
    //:GET VIEW lTrnscpt NAMED "lTrnscpt"
    RESULT = GetViewByName(lTrnscpt, "lTrnscpt", mDegTrk, zLEVEL_TASK);
    //:IF RESULT >= 0
    if (RESULT >= 0) {
        //:DropObjectInstance( lTrnscpt ) 
        DropObjectInstance(lTrnscpt);
    }

    //:END
    //:ACTIVATE lTrnscpt WHERE lTrnscpt.Student.ID = mStudenC_Orig.Student.ID
    {
        MutableInt mi_lTempInteger_5 = new MutableInt(lTempInteger_5);
        GetIntegerFromAttribute(mi_lTempInteger_5, mStudenC_Orig, "Student", "ID");
        lTempInteger_5 = mi_lTempInteger_5.intValue();
    }
    omDegTrk_fnLocalBuildQual_0(mDegTrk, vTempViewVar_0, lTempInteger_5);
    RESULT = ActivateObjectInstance(lTrnscpt, "lTrnscpt", mDegTrk, vTempViewVar_0, zSINGLE);
    DropView(vTempViewVar_0);
    //:NAME VIEW lTrnscpt "lTrnscpt"
    SetNameForView(lTrnscpt, "lTrnscpt", null, zLEVEL_TASK);

    //:// Build the Transcript object as either graduate or undergraduate, depending on the type of DegreeTrack.
    //:szCollegeType = mDegTrk.DegreeMajorCollege.Type  // Type is Graduate or Undergraduate
    {
        MutableInt mi_lTempInteger_6 = new MutableInt(lTempInteger_6);
        StringBuilder sb_szCollegeType;
        if (szCollegeType == null)
            sb_szCollegeType = new StringBuilder(32);
        else
            sb_szCollegeType = new StringBuilder(szCollegeType);
        GetVariableFromAttribute(sb_szCollegeType, mi_lTempInteger_6, 'S', 21, mDegTrk, "DegreeMajorCollege",
                "Type", "", 0);
        lTempInteger_6 = mi_lTempInteger_6.intValue();
        szCollegeType = sb_szCollegeType.toString();
    }
    //:GradUndergradFlag = szCollegeType                // Flag is G or U
    {
        StringBuilder sb_GradUndergradFlag;
        if (GradUndergradFlag == null)
            sb_GradUndergradFlag = new StringBuilder(32);
        else
            sb_GradUndergradFlag = new StringBuilder(GradUndergradFlag);
        ZeidonStringCopy(sb_GradUndergradFlag, 1, 0, szCollegeType, 1, 0, 2);
        GradUndergradFlag = sb_GradUndergradFlag.toString();
    }
    //:BuildTranscript( lTrnscpt, GradUndergradFlag )
    {
        lTrnscpt_Object m_lTrnscpt_Object = new lTrnscpt_Object(lTrnscpt);
        m_lTrnscpt_Object.olTrnscpt_BuildTranscript(lTrnscpt, GradUndergradFlag);
        // m_lTrnscpt_Object = null;  // permit gc  (unnecessary)
    }

    //:// Use a new copy of mStudenC, since we may drop entities in the object.
    //:ActivateOI_FromOI( mStudenC, mStudenC_Orig, zSINGLE )
    ActivateOI_FromOI(mStudenC, mStudenC_Orig, zSINGLE);
    //:NAME VIEW mStudenC "mStudenC_Audit"
    SetNameForView(mStudenC, "mStudenC_Audit", null, zLEVEL_TASK);

    //:// Treat any IP grades as if the student is still enrolled in the Class.
    //:FOR EACH mStudenC.Registration
    RESULT = mStudenC.cursor("Registration").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:szFinalGradeString = mStudenC.Registration.FinalGrade
        {
            MutableInt mi_lTempInteger_7 = new MutableInt(lTempInteger_7);
            StringBuilder sb_szFinalGradeString;
            if (szFinalGradeString == null)
                sb_szFinalGradeString = new StringBuilder(32);
            else
                sb_szFinalGradeString = new StringBuilder(szFinalGradeString);
            GetVariableFromAttribute(sb_szFinalGradeString, mi_lTempInteger_7, 'S', 21, mStudenC,
                    "Registration", "FinalGrade", "", 0);
            lTempInteger_7 = mi_lTempInteger_7.intValue();
            szFinalGradeString = sb_szFinalGradeString.toString();
        }
        //:IF szFinalGradeString = "IP" OR
        //:   szFinalGradeString = "I"  OR
        //:   szFinalGradeString = "NG" OR
        //:   szFinalGradeString = "X"  OR
        //:   szFinalGradeString = "AI"
        if (ZeidonStringCompare(szFinalGradeString, 1, 0, "IP", 1, 0, 21) == 0
                || ZeidonStringCompare(szFinalGradeString, 1, 0, "I", 1, 0, 21) == 0
                || ZeidonStringCompare(szFinalGradeString, 1, 0, "NG", 1, 0, 21) == 0
                || ZeidonStringCompare(szFinalGradeString, 1, 0, "X", 1, 0, 21) == 0
                || ZeidonStringCompare(szFinalGradeString, 1, 0, "AI", 1, 0, 21) == 0) {

            //:mStudenC.Registration.FinalGrade = ""
            SetAttributeFromString(mStudenC, "Registration", "FinalGrade", "");
            //:mStudenC.Registration.Status = "T"
            SetAttributeFromString(mStudenC, "Registration", "Status", "T");
        }

        RESULT = mStudenC.cursor("Registration").setNextContinue().toInt();
        ;
        //:END
    }

    //:END

    //:// Drop any Registration entries that are not for the grad/undergrad type of the College of the DegreeMajor.
    //:IF mDegTrk.DegreeMajorCollege EXISTS
    lTempInteger_8 = CheckExistenceOfEntity(mDegTrk, "DegreeMajorCollege");
    if (lTempInteger_8 == 0) {
        //:GET VIEW mCollegeLST NAMED "mCollegeLST"
        RESULT = GetViewByName(mCollegeLST, "mCollegeLST", mDegTrk, zLEVEL_TASK);
        //:IF RESULT < 0
        if (RESULT < 0) {
            //:ACTIVATE mCollegeLST RootOnlyMultiple
            RESULT = ActivateObjectInstance(mCollegeLST, "mCollege", mDegTrk, 0, zACTIVATE_ROOTONLY_MULTIPLE);
            //:NAME VIEW mCollegeLST "mCollegeLST"
            SetNameForView(mCollegeLST, "mCollegeLST", null, zLEVEL_TASK);
        }

        //:END
        //:FOR EACH mStudenC.Registration
        RESULT = mStudenC.cursor("Registration").setFirst().toInt();
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF mStudenC.Registration.GradUndergradOverrideFlag != ""
            if (CompareAttributeToString(mStudenC, "Registration", "GradUndergradOverrideFlag", "") != 0) {
                //:IF mStudenC.Registration.GradUndergradOverrideFlag != GradUndergradFlag
                if (CompareAttributeToString(mStudenC, "Registration", "GradUndergradOverrideFlag",
                        GradUndergradFlag) != 0) {
                    //:DropEntity( mStudenC, "Registration", zREPOS_NONE )
                    DropEntity(mStudenC, "Registration", zREPOS_NONE);
                }

                //:END
                //:ELSE
            } else {
                //:IF mStudenC.RegistrationCourseCollege EXISTS
                lTempInteger_9 = CheckExistenceOfEntity(mStudenC, "RegistrationCourseCollege");
                if (lTempInteger_9 == 0) {
                    //:SET CURSOR FIRST mCollegeLST.College WHERE mCollegeLST.College.ID = mStudenC.RegistrationCourseCollege.ID 
                    {
                        MutableInt mi_lTempInteger_10 = new MutableInt(lTempInteger_10);
                        GetIntegerFromAttribute(mi_lTempInteger_10, mStudenC, "RegistrationCourseCollege",
                                "ID");
                        lTempInteger_10 = mi_lTempInteger_10.intValue();
                    }
                    RESULT = mCollegeLST.cursor("College").setFirst("ID", lTempInteger_10).toInt();
                    //:IF mCollegeLST.College.Type != szCollegeType
                    if (CompareAttributeToString(mCollegeLST, "College", "Type", szCollegeType) != 0) {
                        //:DropEntity( mStudenC, "Registration", zREPOS_NONE )
                        DropEntity(mStudenC, "Registration", zREPOS_NONE);
                    }

                    //:END
                    //:ELSE
                } else {
                    //:TransferGradUndergradFlag = "U"
                    {
                        StringBuilder sb_TransferGradUndergradFlag;
                        if (TransferGradUndergradFlag == null)
                            sb_TransferGradUndergradFlag = new StringBuilder(32);
                        else
                            sb_TransferGradUndergradFlag = new StringBuilder(TransferGradUndergradFlag);
                        ZeidonStringCopy(sb_TransferGradUndergradFlag, 1, 0, "U", 1, 0, 2);
                        TransferGradUndergradFlag = sb_TransferGradUndergradFlag.toString();
                    }
                    //:IF mStudenC.RegTransferGroup EXISTS
                    lTempInteger_11 = CheckExistenceOfEntity(mStudenC, "RegTransferGroup");
                    if (lTempInteger_11 == 0) {
                        //:// Converted by DonC from GraduateCollegeFlag to ApplyToCollegeLevel on 1/13/2008.
                        //://IF mStudenC.RegTransferGroup.GraduateCollegeFlag = "Y"
                        //:IF mStudenC.RegTransferGroup.ApplyToCollegeLevel = "G"
                        if (CompareAttributeToString(mStudenC, "RegTransferGroup", "ApplyToCollegeLevel",
                                "G") == 0) {
                            //:TransferGradUndergradFlag = "G"
                            {
                                StringBuilder sb_TransferGradUndergradFlag;
                                if (TransferGradUndergradFlag == null)
                                    sb_TransferGradUndergradFlag = new StringBuilder(32);
                                else
                                    sb_TransferGradUndergradFlag = new StringBuilder(TransferGradUndergradFlag);
                                ZeidonStringCopy(sb_TransferGradUndergradFlag, 1, 0, "G", 1, 0, 2);
                                TransferGradUndergradFlag = sb_TransferGradUndergradFlag.toString();
                            }
                        }

                        //:END
                    }

                    //:END
                    //:IF TransferGradUndergradFlag != GradUndergradFlag
                    if (ZeidonStringCompare(TransferGradUndergradFlag, 1, 0, GradUndergradFlag, 1, 0, 2) != 0) {
                        //:DropEntity( mStudenC, "Registration", zREPOS_NONE )
                        DropEntity(mStudenC, "Registration", zREPOS_NONE);
                    }

                    //:END
                }

                //:END
            }

            RESULT = mStudenC.cursor("Registration").setNextContinue().toInt();
            ;
            //:END
        }

        //:END
    }

    //:END

    //:// Add an "Electives" group for putting all classes that don't fall into one of the original Degree Track
    //:// Groups.
    //:SET CURSOR LAST mDegTrk.DegreeTrackRequiredGroup
    RESULT = mDegTrk.cursor("DegreeTrackRequiredGroup").setLast().toInt();
    ;
    //:CREATE ENTITY mDegTrk.DegreeTrackRequiredGroup AFTER
    RESULT = CreateEntity(mDegTrk, "DegreeTrackRequiredGroup", zPOS_AFTER);
    //:CREATE ENTITY mDegTrk.RequiredGroup 
    RESULT = CreateEntity(mDegTrk, "RequiredGroup", zPOS_AFTER);
    //:mDegTrk.RequiredGroup.Name = "Electives"
    SetAttributeFromString(mDegTrk, "RequiredGroup", "Name", "Electives");
    //:mDegTrk.RequiredGroup.Type = "E"
    SetAttributeFromString(mDegTrk, "RequiredGroup", "Type", "E");

    //:// Add any Student Requirements groups at the beginning.
    //:SET CURSOR FIRST mDegTrk.DegreeTrackRequiredGroup
    RESULT = mDegTrk.cursor("DegreeTrackRequiredGroup").setFirst().toInt();
    //:FOR EACH mStudenC.HS_RequiredGroup 
    RESULT = mStudenC.cursor("HS_RequiredGroup").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:ACTIVATE mDegTrkR WHERE mDegTrkR.RequiredGroup.ID = mStudenC.HS_RequiredGroup.ID 
        {
            MutableInt mi_lTempInteger_12 = new MutableInt(lTempInteger_12);
            GetIntegerFromAttribute(mi_lTempInteger_12, mStudenC, "HS_RequiredGroup", "ID");
            lTempInteger_12 = mi_lTempInteger_12.intValue();
        }
        omDegTrk_fnLocalBuildQual_1(mDegTrk, vTempViewVar_1, lTempInteger_12);
        RESULT = ActivateObjectInstance(mDegTrkR, "mDegTrkR", mDegTrk, vTempViewVar_1, zSINGLE);
        DropView(vTempViewVar_1);
        //:CREATE ENTITY mDegTrk.DegreeTrackRequiredGroup BEFORE
        RESULT = CreateEntity(mDegTrk, "DegreeTrackRequiredGroup", zPOS_BEFORE);
        //:INCLUDE mDegTrk.RequiredGroup FROM mDegTrkR.RequiredGroup
        RESULT = IncludeSubobjectFromSubobject(mDegTrk, "RequiredGroup", mDegTrkR, "RequiredGroup", zPOS_AFTER);
        //:DropObjectInstance( mDegTrkR )
        DropObjectInstance(mDegTrkR);
        RESULT = mStudenC.cursor("HS_RequiredGroup").setNextContinue().toInt();
        ;
    }

    //:END

    //:// Add an additional "Developmental" group at the beginning.
    //:SET CURSOR FIRST mDegTrk.DegreeTrackRequiredGroup
    RESULT = mDegTrk.cursor("DegreeTrackRequiredGroup").setFirst().toInt();
    //:CREATE ENTITY mDegTrk.DegreeTrackRequiredGroup BEFORE
    RESULT = CreateEntity(mDegTrk, "DegreeTrackRequiredGroup", zPOS_BEFORE);
    //:CREATE ENTITY mDegTrk.RequiredGroup 
    RESULT = CreateEntity(mDegTrk, "RequiredGroup", zPOS_AFTER);
    //:mDegTrk.RequiredGroup.Name = "Developmental"
    SetAttributeFromString(mDegTrk, "RequiredGroup", "Name", "Developmental");
    //:mDegTrk.RequiredGroup.Type = "D"
    SetAttributeFromString(mDegTrk, "RequiredGroup", "Type", "D");
    //:SetAttributeFromCurrentDateTime( mDegTrk, "DegreeTrack", "wCreatedDate" )
    {
        ZGLOBAL1_Operation m_ZGLOBAL1_Operation = new ZGLOBAL1_Operation(mDegTrk);
        m_ZGLOBAL1_Operation.SetAttributeFromCurrentDateTime(mDegTrk, "DegreeTrack", "wCreatedDate");
        // m_ZGLOBAL1_Operation = null;  // permit gc  (unnecessary)
    }

    //:// First, loop through and process any substituted Courses and assign them to the correct Group Course or Group.
    //:// If one or more entries exist to assign the Course to a particular Group and/or Course, we will first try to 
    //:// use that information in assigning the Course. If it doesn't work or if no particular Course was requested,
    //:// we will skip assignment here.
    //:FOR EACH mStudenC.Registration 
    //:                       WHERE mStudenC.Registration.Status = "C"    // Completed
    //:                          OR mStudenC.Registration.Status = "T"    // Currently Enrolled
    //:                          OR mStudenC.Registration.Status = "V"    // Waived
    //:                          OR mStudenC.Registration.Status = "F"    // Transferred
    //:                          OR mStudenC.Registration.Status = "X"    // L. Transferred
    //:                          OR mStudenC.Registration.Status = "Y"    // L. Waived
    //:                          OR mStudenC.Registration.Status = "P"    // Pre-Transferred
    RESULT = mStudenC.cursor("Registration").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        if (CompareAttributeToString(mStudenC, "Registration", "Status", "C") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "T") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "V") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "F") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "X") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "Y") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "P") == 0) {

            //:IF mStudenC.RegistrationClass EXISTS
            lTempInteger_13 = CheckExistenceOfEntity(mStudenC, "RegistrationClass");
            if (lTempInteger_13 == 0) {
                //:IF mStudenC.CrossListedCourse EXISTS
                lTempInteger_14 = CheckExistenceOfEntity(mStudenC, "CrossListedCourse");
                if (lTempInteger_14 == 0) {
                    //:CourseID = mStudenC.CrossListedCourse.ID 
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "CrossListedCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                    //:ELSE
                } else {
                    //:CourseID = mStudenC.RegistrationCourse.ID
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "RegistrationCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                }

                //:END
                //:RepeatableForCreditFlag = mStudenC.RegistrationCourse.RepeatableForCreditFlag 
                {
                    MutableInt mi_lTempInteger_15 = new MutableInt(lTempInteger_15);
                    StringBuilder sb_RepeatableForCreditFlag;
                    if (RepeatableForCreditFlag == null)
                        sb_RepeatableForCreditFlag = new StringBuilder(32);
                    else
                        sb_RepeatableForCreditFlag = new StringBuilder(RepeatableForCreditFlag);
                    GetVariableFromAttribute(sb_RepeatableForCreditFlag, mi_lTempInteger_15, 'S', 2, mStudenC,
                            "RegistrationCourse", "RepeatableForCreditFlag", "", 0);
                    lTempInteger_15 = mi_lTempInteger_15.intValue();
                    RepeatableForCreditFlag = sb_RepeatableForCreditFlag.toString();
                }
                //:ELSE
            } else {
                //:IF mStudenC.EquivalentCourse EXISTS
                lTempInteger_16 = CheckExistenceOfEntity(mStudenC, "EquivalentCourse");
                if (lTempInteger_16 == 0) {
                    //:CourseID                = mStudenC.EquivalentCourse.ID
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "EquivalentCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                    //:RepeatableForCreditFlag = mStudenC.EquivalentCourse.RepeatableForCreditFlag 
                    {
                        MutableInt mi_lTempInteger_17 = new MutableInt(lTempInteger_17);
                        StringBuilder sb_RepeatableForCreditFlag;
                        if (RepeatableForCreditFlag == null)
                            sb_RepeatableForCreditFlag = new StringBuilder(32);
                        else
                            sb_RepeatableForCreditFlag = new StringBuilder(RepeatableForCreditFlag);
                        GetVariableFromAttribute(sb_RepeatableForCreditFlag, mi_lTempInteger_17, 'S', 2,
                                mStudenC, "EquivalentCourse", "RepeatableForCreditFlag", "", 0);
                        lTempInteger_17 = mi_lTempInteger_17.intValue();
                        RepeatableForCreditFlag = sb_RepeatableForCreditFlag.toString();
                    }
                    //:ELSE
                } else {
                    //:CourseID = 0
                    CourseID = 0;
                }

                //:END
            }

            //:END

            //:SubstituteFlag = ""
            {
                StringBuilder sb_SubstituteFlag;
                if (SubstituteFlag == null)
                    sb_SubstituteFlag = new StringBuilder(32);
                else
                    sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "", 1, 0, 2);
                SubstituteFlag = sb_SubstituteFlag.toString();
            }
            //:mStudenC.Registration.wSubstituteFlag = ""
            SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag", "");
            //:FOR EACH mStudenC.DegreeAuditSpecification 
            RESULT = mStudenC.cursor("DegreeAuditSpecification").setFirst().toInt();
            while (RESULT > zCURSOR_UNCHANGED) {
                //:IF mStudenC.DAS_DegreeTrack DOES NOT EXIST
                lTempInteger_18 = CheckExistenceOfEntity(mStudenC, "DAS_DegreeTrack");
                if (lTempInteger_18 != 0) {
                    //:IF mStudenC.DAS_Course EXISTS
                    lTempInteger_19 = CheckExistenceOfEntity(mStudenC, "DAS_Course");
                    if (lTempInteger_19 == 0) {
                        //:Msg = "The Degree Track for Substitute Course, " + mStudenC.DAS_Course.Number + ", does not exist." + NEW_LINE +
                        //:   "Please delete the manual assignment entry."
                        {
                            MutableInt mi_lTempInteger_20 = new MutableInt(lTempInteger_20);
                            StringBuilder sb_szTempString_0;
                            if (szTempString_0 == null)
                                sb_szTempString_0 = new StringBuilder(32);
                            else
                                sb_szTempString_0 = new StringBuilder(szTempString_0);
                            GetVariableFromAttribute(sb_szTempString_0, mi_lTempInteger_20, 'S', 11, mStudenC,
                                    "DAS_Course", "Number", "", 0);
                            lTempInteger_20 = mi_lTempInteger_20.intValue();
                            szTempString_0 = sb_szTempString_0.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringCopy(sb_Msg, 1, 0, "The Degree Track for Substitute Course, ", 1, 0,
                                    201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, szTempString_0, 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, ", does not exist.", 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, NEW_LINE, 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, "Please delete the manual assignment entry.", 1, 0,
                                    201);
                            Msg = sb_Msg.toString();
                        }
                        //:MessageSend( mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 )
                        MessageSend(mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0);
                        //:ELSE
                    } else {
                        //:Msg = "The Degree Track for Substitute Group, " + mStudenC.DAS_RequiredGroup.Name + ", does not exist." + NEW_LINE +
                        //:   "Please delete the manual assignment entry."
                        {
                            MutableInt mi_lTempInteger_21 = new MutableInt(lTempInteger_21);
                            StringBuilder sb_szTempString_1;
                            if (szTempString_1 == null)
                                sb_szTempString_1 = new StringBuilder(32);
                            else
                                sb_szTempString_1 = new StringBuilder(szTempString_1);
                            GetVariableFromAttribute(sb_szTempString_1, mi_lTempInteger_21, 'S', 51, mStudenC,
                                    "DAS_RequiredGroup", "Name", "", 0);
                            lTempInteger_21 = mi_lTempInteger_21.intValue();
                            szTempString_1 = sb_szTempString_1.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringCopy(sb_Msg, 1, 0, "The Degree Track for Substitute Group, ", 1, 0,
                                    201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, szTempString_1, 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, ", does not exist.", 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, NEW_LINE, 1, 0, 201);
                            Msg = sb_Msg.toString();
                        }
                        {
                            StringBuilder sb_Msg;
                            if (Msg == null)
                                sb_Msg = new StringBuilder(32);
                            else
                                sb_Msg = new StringBuilder(Msg);
                            ZeidonStringConcat(sb_Msg, 1, 0, "Please delete the manual assignment entry.", 1, 0,
                                    201);
                            Msg = sb_Msg.toString();
                        }
                        //:MessageSend( mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 )
                        MessageSend(mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0);
                    }

                    //:END
                    //:ELSE
                } else {
                    //:IF SubstituteFlag = "" AND mStudenC.DAS_DegreeTrack.ID = mDegTrk.DegreeTrack.ID 
                    if (ZeidonStringCompare(SubstituteFlag, 1, 0, "", 1, 0, 2) == 0
                            && CompareAttributeToAttribute(mStudenC, "DAS_DegreeTrack", "ID", mDegTrk,
                                    "DegreeTrack", "ID") == 0) {
                        //:SET CURSOR FIRST mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack
                        //:        WHERE mDegTrk.RequiredGroup.ID = mStudenC.DAS_RequiredGroup.ID
                        {
                            MutableInt mi_lTempInteger_22 = new MutableInt(lTempInteger_22);
                            GetIntegerFromAttribute(mi_lTempInteger_22, mStudenC, "DAS_RequiredGroup", "ID");
                            lTempInteger_22 = mi_lTempInteger_22.intValue();
                        }
                        RESULT = mDegTrk.cursor("RequiredGroup").setFirst("ID", lTempInteger_22, "DegreeTrack")
                                .toInt();
                        //:IF mStudenC.DAS_RequiredSubGroup EXISTS
                        lTempInteger_23 = CheckExistenceOfEntity(mStudenC, "DAS_RequiredSubGroup");
                        if (lTempInteger_23 == 0) {
                            //:SET CURSOR FIRST mDegTrk.RequiredSubGroup 
                            //:        WHERE mDegTrk.RequiredSubGroup.ID = mStudenC.DAS_RequiredSubGroup.ID  
                            {
                                MutableInt mi_lTempInteger_24 = new MutableInt(lTempInteger_24);
                                GetIntegerFromAttribute(mi_lTempInteger_24, mStudenC, "DAS_RequiredSubGroup",
                                        "ID");
                                lTempInteger_24 = mi_lTempInteger_24.intValue();
                            }
                            RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("ID", lTempInteger_24).toInt();
                        }

                        //:END
                        //:IF mStudenC.DAS_Course EXISTS
                        lTempInteger_25 = CheckExistenceOfEntity(mStudenC, "DAS_Course");
                        if (lTempInteger_25 == 0) {
                            //:// A particular Course override entry is selected, so just position on that Course.
                            //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                            //:        WHERE mDegTrk.CourseType1or2.ID = mStudenC.DAS_Course.ID 
                            {
                                MutableInt mi_lTempInteger_26 = new MutableInt(lTempInteger_26);
                                GetIntegerFromAttribute(mi_lTempInteger_26, mStudenC, "DAS_Course", "ID");
                                lTempInteger_26 = mi_lTempInteger_26.intValue();
                            }
                            RESULT = mDegTrk.cursor("CourseType1or2")
                                    .setFirst("ID", lTempInteger_26, "RequiredGroup").toInt();
                            //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                            if (RESULT >= zCURSOR_SET
                                    && CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "E") != 0) {
                                //:CourseType1or2Match( mDegTrk, mStudenC, mStudent )
                                omDegTrk_CourseType1or2Match(mDegTrk, mStudenC, mStudent);
                                //:SubstituteFlag = "Y"
                                {
                                    StringBuilder sb_SubstituteFlag;
                                    if (SubstituteFlag == null)
                                        sb_SubstituteFlag = new StringBuilder(32);
                                    else
                                        sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                    ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                    SubstituteFlag = sb_SubstituteFlag.toString();
                                }
                                //:mStudenC.Registration.wSubstituteFlag = "Y"
                                SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag", "Y");
                                //:ELSE
                            } else {
                                //:IF mStudenC.DAS_RequiredSubGroup EXISTS
                                lTempInteger_27 = CheckExistenceOfEntity(mStudenC, "DAS_RequiredSubGroup");
                                if (lTempInteger_27 == 0) {
                                    //:SET CURSOR FIRST mDegTrk.RequiredSubGroup 
                                    //:        WHERE mDegTrk.RequiredSubGroup.ID = mStudenC.DAS_RequiredSubGroup.ID  
                                    {
                                        MutableInt mi_lTempInteger_28 = new MutableInt(lTempInteger_28);
                                        GetIntegerFromAttribute(mi_lTempInteger_28, mStudenC,
                                                "DAS_RequiredSubGroup", "ID");
                                        lTempInteger_28 = mi_lTempInteger_28.intValue();
                                    }
                                    RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("ID", lTempInteger_28)
                                            .toInt();
                                    //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredSubGroup
                                    //:        WHERE mDegTrk.CourseType3or4.ID = mStudenC.DAS_Course.ID       
                                    {
                                        MutableInt mi_lTempInteger_29 = new MutableInt(lTempInteger_29);
                                        GetIntegerFromAttribute(mi_lTempInteger_29, mStudenC, "DAS_Course",
                                                "ID");
                                        lTempInteger_29 = mi_lTempInteger_29.intValue();
                                    }
                                    RESULT = mDegTrk.cursor("CourseType3or4")
                                            .setFirst("ID", lTempInteger_29, "RequiredSubGroup").toInt();
                                    //:ELSE
                                } else {
                                    //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredGroup
                                    //:        WHERE mDegTrk.CourseType3or4.ID = mStudenC.DAS_Course.ID 
                                    {
                                        MutableInt mi_lTempInteger_30 = new MutableInt(lTempInteger_30);
                                        GetIntegerFromAttribute(mi_lTempInteger_30, mStudenC, "DAS_Course",
                                                "ID");
                                        lTempInteger_30 = mi_lTempInteger_30.intValue();
                                    }
                                    RESULT = mDegTrk.cursor("CourseType3or4")
                                            .setFirst("ID", lTempInteger_30, "RequiredGroup").toInt();
                                }

                                //:END
                                //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                                if (RESULT >= zCURSOR_SET && CompareAttributeToString(mDegTrk, "RequiredGroup",
                                        "Type", "E") != 0) {
                                    //:CourseType3or4Match( mDegTrk, mStudenC, mStudent )
                                    omDegTrk_CourseType3or4Match(mDegTrk, mStudenC, mStudent);
                                    //:SubstituteFlag = "Y"
                                    {
                                        StringBuilder sb_SubstituteFlag;
                                        if (SubstituteFlag == null)
                                            sb_SubstituteFlag = new StringBuilder(32);
                                        else
                                            sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                        ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                        SubstituteFlag = sb_SubstituteFlag.toString();
                                    }
                                    //:mStudenC.Registration.wSubstituteFlag = "Y"
                                    SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag", "Y");
                                }

                                //:END
                            }

                            //:END
                            //:ELSE
                        } else {
                            //:// A particular Course entry is not selected.
                            //:IF RepeatableForCreditFlag = "Y"
                            if (ZeidonStringCompare(RepeatableForCreditFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                                //:// For Repeatable Course, we don't care about whether we've already processed the entry.
                                //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                                //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                                RESULT = mDegTrk.cursor("CourseType1or2")
                                        .setFirst("ID", CourseID, "RequiredGroup").toInt();
                                //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                                if (RESULT >= zCURSOR_SET && CompareAttributeToString(mDegTrk, "RequiredGroup",
                                        "Type", "E") != 0) {
                                    //:CourseType1or2Match( mDegTrk, mStudenC, mStudent )
                                    omDegTrk_CourseType1or2Match(mDegTrk, mStudenC, mStudent);
                                    //:SubstituteFlag = "Y"
                                    {
                                        StringBuilder sb_SubstituteFlag;
                                        if (SubstituteFlag == null)
                                            sb_SubstituteFlag = new StringBuilder(32);
                                        else
                                            sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                        ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                        SubstituteFlag = sb_SubstituteFlag.toString();
                                    }
                                    //:mStudenC.Registration.wSubstituteFlag = "Y"
                                    SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag", "Y");
                                    //:ELSE
                                } else {
                                    //:IF mStudenC.DAS_RequiredSubGroup EXISTS
                                    lTempInteger_31 = CheckExistenceOfEntity(mStudenC, "DAS_RequiredSubGroup");
                                    if (lTempInteger_31 == 0) {
                                        //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredSubGroup
                                        //:        WHERE mDegTrk.CourseType3or4.ID = CourseID       
                                        RESULT = mDegTrk.cursor("CourseType3or4")
                                                .setFirst("ID", CourseID, "RequiredSubGroup").toInt();
                                        //:ELSE
                                    } else {
                                        //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredGroup
                                        //:        WHERE mDegTrk.CourseType3or4.ID = CourseID 
                                        RESULT = mDegTrk.cursor("CourseType3or4")
                                                .setFirst("ID", CourseID, "RequiredGroup").toInt();
                                    }

                                    //:END
                                    //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                                    if (RESULT >= zCURSOR_SET && CompareAttributeToString(mDegTrk,
                                            "RequiredGroup", "Type", "E") != 0) {
                                        //:CourseType3or4Match( mDegTrk, mStudenC, mStudent )
                                        omDegTrk_CourseType3or4Match(mDegTrk, mStudenC, mStudent);
                                        //:SubstituteFlag = "Y"
                                        {
                                            StringBuilder sb_SubstituteFlag;
                                            if (SubstituteFlag == null)
                                                sb_SubstituteFlag = new StringBuilder(32);
                                            else
                                                sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                            ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                            SubstituteFlag = sb_SubstituteFlag.toString();
                                        }
                                        //:mStudenC.Registration.wSubstituteFlag = "Y"
                                        SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag",
                                                "Y");
                                    }

                                    //:END
                                }

                                //:END
                                //:ELSE
                            } else {
                                //:// For non-Repeatable Course, we DO care about whether we've already processed the entry.
                                //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                                //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                                //:          AND mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = ""
                                RESULT = mDegTrk.cursor("CourseType1or2").setFirst("RequiredGroup").toInt();
                                if (RESULT > zCURSOR_UNCHANGED) {
                                    while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(mDegTrk,
                                            "CourseType1or2", "ID", CourseID) != 0
                                            || CompareAttributeToString(mDegTrk, "CourseType1or2",
                                                    "wDegreeAuditCourseTaken", "") != 0)) {
                                        RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                                        ;
                                    }

                                }

                                //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                                if (RESULT >= zCURSOR_SET && CompareAttributeToString(mDegTrk, "RequiredGroup",
                                        "Type", "E") != 0) {
                                    //:CourseType1or2Match( mDegTrk, mStudenC, mStudent )
                                    omDegTrk_CourseType1or2Match(mDegTrk, mStudenC, mStudent);
                                    //:SubstituteFlag = "Y"
                                    {
                                        StringBuilder sb_SubstituteFlag;
                                        if (SubstituteFlag == null)
                                            sb_SubstituteFlag = new StringBuilder(32);
                                        else
                                            sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                        ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                        SubstituteFlag = sb_SubstituteFlag.toString();
                                    }
                                    //:mStudenC.Registration.wSubstituteFlag = "Y"
                                    SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag", "Y");
                                    //:ELSE
                                } else {
                                    //:IF mStudenC.DAS_RequiredSubGroup EXISTS
                                    lTempInteger_32 = CheckExistenceOfEntity(mStudenC, "DAS_RequiredSubGroup");
                                    if (lTempInteger_32 == 0) {
                                        //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredSubGroup
                                        //:        WHERE mDegTrk.CourseType3or4.ID = CourseID
                                        //:          AND mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = ""    
                                        RESULT = mDegTrk.cursor("CourseType3or4").setFirst("RequiredSubGroup")
                                                .toInt();
                                        if (RESULT > zCURSOR_UNCHANGED) {
                                            while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(
                                                    mDegTrk, "CourseType3or4", "ID", CourseID) != 0
                                                    || CompareAttributeToString(mDegTrk, "CourseType3or4",
                                                            "wDegreeAuditCourseTaken", "") != 0)) {
                                                RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue()
                                                        .toInt();
                                                ;
                                            }

                                        }

                                        //:ELSE
                                    } else {
                                        //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredGroup
                                        //:        WHERE mDegTrk.CourseType3or4.ID = CourseID
                                        //:          AND mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = ""
                                        RESULT = mDegTrk.cursor("CourseType3or4").setFirst("RequiredGroup")
                                                .toInt();
                                        if (RESULT > zCURSOR_UNCHANGED) {
                                            while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(
                                                    mDegTrk, "CourseType3or4", "ID", CourseID) != 0
                                                    || CompareAttributeToString(mDegTrk, "CourseType3or4",
                                                            "wDegreeAuditCourseTaken", "") != 0)) {
                                                RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue()
                                                        .toInt();
                                                ;
                                            }

                                        }

                                    }

                                    //:END
                                    //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                                    if (RESULT >= zCURSOR_SET && CompareAttributeToString(mDegTrk,
                                            "RequiredGroup", "Type", "E") != 0) {
                                        //:CourseType3or4Match( mDegTrk, mStudenC, mStudent )
                                        omDegTrk_CourseType3or4Match(mDegTrk, mStudenC, mStudent);
                                        //:SubstituteFlag = "Y"
                                        {
                                            StringBuilder sb_SubstituteFlag;
                                            if (SubstituteFlag == null)
                                                sb_SubstituteFlag = new StringBuilder(32);
                                            else
                                                sb_SubstituteFlag = new StringBuilder(SubstituteFlag);
                                            ZeidonStringCopy(sb_SubstituteFlag, 1, 0, "Y", 1, 0, 2);
                                            SubstituteFlag = sb_SubstituteFlag.toString();
                                        }
                                        //:mStudenC.Registration.wSubstituteFlag = "Y"
                                        SetAttributeFromString(mStudenC, "Registration", "wSubstituteFlag",
                                                "Y");
                                    }

                                    //:END
                                }

                                //:END
                            }

                            //:END
                        }

                        //:END
                    }

                    //:END
                }

                RESULT = mStudenC.cursor("DegreeAuditSpecification").setNextContinue().toInt();
                ;
                //:END
            }

        }

        RESULT = mStudenC.cursor("Registration").setNextContinue().toInt();
        ;
        //:END
    }

    //:END

    //:// Next, loop through all non-substitute courses taken (or equivalency, if taken somewhere else) and indicate in
    //:// mDegTrk if the grade in the class qualifies the course for credit in mDegTrk.
    //:// We will not consider repeated courses or Developmental courses on this pass.
    //:MinimumElectiveGrade = 1       // Minimum grade is D, which has quality points of 1.
    MinimumElectiveGrade = 1;
    //:FOR EACH mStudenC.Registration 
    //:                       WHERE mStudenC.Registration.Status = "C"    // Completed
    //:                          OR mStudenC.Registration.Status = "T"    // Currently Enrolled
    //:                          OR mStudenC.Registration.Status = "V"    // Waived
    //:                          OR mStudenC.Registration.Status = "F"    // Transferred
    //:                          OR mStudenC.Registration.Status = "X"    // L. Transferred
    //:                          OR mStudenC.Registration.Status = "Y"    // L. Waived
    //:                          OR mStudenC.Registration.Status = "P"    // Pre-Transferred
    RESULT = mStudenC.cursor("Registration").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        if (CompareAttributeToString(mStudenC, "Registration", "Status", "C") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "T") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "V") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "F") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "X") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "Y") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "P") == 0) {

            //:IF mStudenC.RegistrationClass EXISTS
            lTempInteger_33 = CheckExistenceOfEntity(mStudenC, "RegistrationClass");
            if (lTempInteger_33 == 0) {
                //:IF mStudenC.CrossListedCourse EXISTS
                lTempInteger_34 = CheckExistenceOfEntity(mStudenC, "CrossListedCourse");
                if (lTempInteger_34 == 0) {
                    //:CourseID = mStudenC.CrossListedCourse.ID 
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "CrossListedCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                    //:ELSE
                } else {
                    //:CourseID = mStudenC.RegistrationCourse.ID
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "RegistrationCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                }

                //:END
                //:RepeatableForCreditFlag = mStudenC.RegistrationCourse.RepeatableForCreditFlag 
                {
                    MutableInt mi_lTempInteger_35 = new MutableInt(lTempInteger_35);
                    StringBuilder sb_RepeatableForCreditFlag;
                    if (RepeatableForCreditFlag == null)
                        sb_RepeatableForCreditFlag = new StringBuilder(32);
                    else
                        sb_RepeatableForCreditFlag = new StringBuilder(RepeatableForCreditFlag);
                    GetVariableFromAttribute(sb_RepeatableForCreditFlag, mi_lTempInteger_35, 'S', 2, mStudenC,
                            "RegistrationCourse", "RepeatableForCreditFlag", "", 0);
                    lTempInteger_35 = mi_lTempInteger_35.intValue();
                    RepeatableForCreditFlag = sb_RepeatableForCreditFlag.toString();
                }
                //:DevelopmentalFlag       = mStudenC.RegistrationCourse.DevelopmentalFlag 
                {
                    MutableInt mi_lTempInteger_36 = new MutableInt(lTempInteger_36);
                    StringBuilder sb_DevelopmentalFlag;
                    if (DevelopmentalFlag == null)
                        sb_DevelopmentalFlag = new StringBuilder(32);
                    else
                        sb_DevelopmentalFlag = new StringBuilder(DevelopmentalFlag);
                    GetVariableFromAttribute(sb_DevelopmentalFlag, mi_lTempInteger_36, 'S', 2, mStudenC,
                            "RegistrationCourse", "DevelopmentalFlag", "", 0);
                    lTempInteger_36 = mi_lTempInteger_36.intValue();
                    DevelopmentalFlag = sb_DevelopmentalFlag.toString();
                }
                //:ELSE
            } else {
                //:IF mStudenC.EquivalentCourse EXISTS
                lTempInteger_37 = CheckExistenceOfEntity(mStudenC, "EquivalentCourse");
                if (lTempInteger_37 == 0) {
                    //:CourseID                = mStudenC.EquivalentCourse.ID
                    {
                        MutableInt mi_CourseID = new MutableInt(CourseID);
                        GetIntegerFromAttribute(mi_CourseID, mStudenC, "EquivalentCourse", "ID");
                        CourseID = mi_CourseID.intValue();
                    }
                    //:RepeatableForCreditFlag = mStudenC.EquivalentCourse.RepeatableForCreditFlag 
                    {
                        MutableInt mi_lTempInteger_38 = new MutableInt(lTempInteger_38);
                        StringBuilder sb_RepeatableForCreditFlag;
                        if (RepeatableForCreditFlag == null)
                            sb_RepeatableForCreditFlag = new StringBuilder(32);
                        else
                            sb_RepeatableForCreditFlag = new StringBuilder(RepeatableForCreditFlag);
                        GetVariableFromAttribute(sb_RepeatableForCreditFlag, mi_lTempInteger_38, 'S', 2,
                                mStudenC, "EquivalentCourse", "RepeatableForCreditFlag", "", 0);
                        lTempInteger_38 = mi_lTempInteger_38.intValue();
                        RepeatableForCreditFlag = sb_RepeatableForCreditFlag.toString();
                    }
                    //:DevelopmentalFlag       = ""
                    {
                        StringBuilder sb_DevelopmentalFlag;
                        if (DevelopmentalFlag == null)
                            sb_DevelopmentalFlag = new StringBuilder(32);
                        else
                            sb_DevelopmentalFlag = new StringBuilder(DevelopmentalFlag);
                        ZeidonStringCopy(sb_DevelopmentalFlag, 1, 0, "", 1, 0, 2);
                        DevelopmentalFlag = sb_DevelopmentalFlag.toString();
                    }
                    //:ELSE
                } else {
                    //:CourseID = 0
                    CourseID = 0;
                }

                //:END
            }

            //:END
            //:GetStringFromAttributeByContext( StudentStatus, mStudenC, "Registration", "Status", "", 20 )
            {
                StringBuilder sb_StudentStatus;
                if (StudentStatus == null)
                    sb_StudentStatus = new StringBuilder(32);
                else
                    sb_StudentStatus = new StringBuilder(StudentStatus);
                GetStringFromAttributeByContext(sb_StudentStatus, mStudenC, "Registration", "Status", "", 20);
                StudentStatus = sb_StudentStatus.toString();
            }
            //:// Skip repeated courses, Developmental courses or substituted courses.
            //:IF mStudenC.Registration.wRepeatedClass = "" AND
            //://DevelopmentalFlag = "" AND 
            //:mStudenC.Registration.wSubstituteFlag != "Y"
            if (CompareAttributeToString(mStudenC, "Registration", "wRepeatedClass", "") == 0
                    && CompareAttributeToString(mStudenC, "Registration", "wSubstituteFlag", "Y") != 0) {

                //:GetStringFromAttributeByContext( szFinalGradeString,
                //:                              mStudenC, "Registration", "FinalGrade", "DegreeTrackGradePointValue", 20 )
                {
                    StringBuilder sb_szFinalGradeString;
                    if (szFinalGradeString == null)
                        sb_szFinalGradeString = new StringBuilder(32);
                    else
                        sb_szFinalGradeString = new StringBuilder(szFinalGradeString);
                    GetStringFromAttributeByContext(sb_szFinalGradeString, mStudenC, "Registration",
                            "FinalGrade", "DegreeTrackGradePointValue", 20);
                    szFinalGradeString = sb_szFinalGradeString.toString();
                }
                //:FinalGrade = StrToDecimal( szFinalGradeString )   // FinalGrade is in "Quality Points".
                {
                    ZGLOBAL1_Operation m_ZGLOBAL1_Operation = new ZGLOBAL1_Operation(mDegTrk);
                    FinalGrade = m_ZGLOBAL1_Operation.StrToDecimal(szFinalGradeString);
                    // m_ZGLOBAL1_Operation = null;  // permit gc  (unnecessary)
                }
                //:szFinalGradeString = mStudenC.Registration.FinalGrade     // Get grade again as normal string.
                {
                    MutableInt mi_lTempInteger_39 = new MutableInt(lTempInteger_39);
                    StringBuilder sb_szFinalGradeString;
                    if (szFinalGradeString == null)
                        sb_szFinalGradeString = new StringBuilder(32);
                    else
                        sb_szFinalGradeString = new StringBuilder(szFinalGradeString);
                    GetVariableFromAttribute(sb_szFinalGradeString, mi_lTempInteger_39, 'S', 21, mStudenC,
                            "Registration", "FinalGrade", "", 0);
                    lTempInteger_39 = mi_lTempInteger_39.intValue();
                    szFinalGradeString = sb_szFinalGradeString.toString();
                }

                //:// Process Course ID just selected if it has not already been assigned as a substitue Course.
                //:// How we try to position on a particular Course entry depends on whether or not the Course is repeatable and
                //:// whether the Course entry has been selected to be assigned to a particular Group or a particular Course within
                //:// a Group..

                //:IF mStudenC.Registration.wSubstituteFlag = ""
                if (CompareAttributeToString(mStudenC, "Registration", "wSubstituteFlag", "") == 0) {
                    //:IF mStudenC.Registration.TakingClassType = "A"
                    if (CompareAttributeToString(mStudenC, "Registration", "TakingClassType", "A") == 0) {
                        //:// Course is being audited, so add to Elective group.
                        //:CreateElectiveEntry( mDegTrk, mStudenC, mStudent )
                        omDegTrk_CreateElectiveEntry(mDegTrk, mStudenC, mStudent);
                        //:mDegTrk.CourseType1or2.wCreditsTaken = 0
                        SetAttributeFromInteger(mDegTrk, "CourseType1or2", "wCreditsTaken", 0);
                        //:IF mStudenC.Registration.Status = "C"
                        if (CompareAttributeToString(mStudenC, "Registration", "Status", "C") == 0) {
                            //:mDegTrk.CourseType1or2.wCourseStatus = "Audited"
                            SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "Audited");
                            //:ELSE
                        } else {
                            //:mDegTrk.CourseType1or2.wCourseStatus = "Auditing"
                            SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "Auditing");
                        }

                        //:END
                        //:ELSE
                    } else {
                        //:IF RepeatableForCreditFlag = "Y"
                        if (ZeidonStringCompare(RepeatableForCreditFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                            //:// For Repeatable Course, we don't care about whether we've already processed the entry.
                            //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack
                            //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                            RESULT = mDegTrk.cursor("CourseType1or2").setFirst("ID", CourseID, "DegreeTrack")
                                    .toInt();
                            //:// If the RequiredGroup is Type 1, then we do care about positioning on an entry that we've not yet processed.
                            //:IF mDegTrk.RequiredGroup.Type = "1"
                            if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "1") == 0) {
                                //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack
                                //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                                //:          AND mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = ""
                                RESULT = mDegTrk.cursor("CourseType1or2").setFirst("DegreeTrack").toInt();
                                if (RESULT > zCURSOR_UNCHANGED) {
                                    while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(mDegTrk,
                                            "CourseType1or2", "ID", CourseID) != 0
                                            || CompareAttributeToString(mDegTrk, "CourseType1or2",
                                                    "wDegreeAuditCourseTaken", "") != 0)) {
                                        RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                                        ;
                                    }

                                }

                            }

                            //:END
                            //:ELSE
                        } else {
                            //:// For non-Repeatable Course, we DO care about whether we've already processed the entry.
                            //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack
                            //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                            //:          AND mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = ""
                            RESULT = mDegTrk.cursor("CourseType1or2").setFirst("DegreeTrack").toInt();
                            if (RESULT > zCURSOR_UNCHANGED) {
                                while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(mDegTrk,
                                        "CourseType1or2", "ID", CourseID) != 0
                                        || CompareAttributeToString(mDegTrk, "CourseType1or2",
                                                "wDegreeAuditCourseTaken", "") != 0)) {
                                    RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                                    ;
                                }

                            }

                        }

                        //:END

                        //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                        if (RESULT >= zCURSOR_SET
                                && CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "E") != 0) {
                            //:// There was a match on CourseType1or2. Go process entry.
                            //:CourseType1or2Match( mDegTrk, mStudenC, mStudent )
                            omDegTrk_CourseType1or2Match(mDegTrk, mStudenC, mStudent);
                            //:ELSE
                        } else {
                            //:// There wasn't a match on CourseType1or2, so try CourseType3or4.
                            //:IF RepeatableForCreditFlag = "Y"
                            if (ZeidonStringCompare(RepeatableForCreditFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                                //:// For Repeatable Course, we don't care about whether we've already processed the entry.
                                //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack
                                //:        WHERE mDegTrk.CourseType3or4.ID = CourseID
                                RESULT = mDegTrk.cursor("CourseType3or4")
                                        .setFirst("ID", CourseID, "DegreeTrack").toInt();
                                //:ELSE
                            } else {
                                //:// For non-Repeatable Course, we DO care about whether we've already processed the entry.
                                //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack
                                //:        WHERE mDegTrk.CourseType3or4.ID = CourseID
                                //:          AND mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = ""
                                RESULT = mDegTrk.cursor("CourseType3or4").setFirst("DegreeTrack").toInt();
                                if (RESULT > zCURSOR_UNCHANGED) {
                                    while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToInteger(mDegTrk,
                                            "CourseType3or4", "ID", CourseID) != 0
                                            || CompareAttributeToString(mDegTrk, "CourseType3or4",
                                                    "wDegreeAuditCourseTaken", "") != 0)) {
                                        RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue().toInt();
                                        ;
                                    }

                                }

                            }

                            //:END
                            //:IF RESULT >= zCURSOR_SET AND mDegTrk.RequiredGroup.Type != "E"
                            if (RESULT >= zCURSOR_SET
                                    && CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "E") != 0) {
                                //:// There was a match on CourseType3or4. Go process entry.
                                //:CourseType3or4Match( mDegTrk, mStudenC, mStudent )
                                omDegTrk_CourseType3or4Match(mDegTrk, mStudenC, mStudent);
                                //:ELSE
                            } else {
                                //:// There was no match with any of the Required Groups, so add to Electives or general Developmental group.
                                //:// For "not-waived courses", if the course wasn't passed  we'll override the CreditHours to 0.
                                //:IF DevelopmentalFlag = "Y" 
                                if (ZeidonStringCompare(DevelopmentalFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                                    //:CreateDevelopmentEntry( mDegTrk, mStudenC, mStudent )
                                    omDegTrk_CreateDevelopmentEntry(mDegTrk, mStudenC, mStudent);
                                    //:ELSE
                                } else {
                                    //:CreateElectiveEntry( mDegTrk, mStudenC, mStudent )
                                    omDegTrk_CreateElectiveEntry(mDegTrk, mStudenC, mStudent);
                                    //:IF mStudenC.Registration.Status != "V" AND   // Waived
                                    //:mStudenC.Registration.Status != "Y"       // L. Waived 
                                    if (CompareAttributeToString(mStudenC, "Registration", "Status", "V") != 0
                                            && CompareAttributeToString(mStudenC, "Registration", "Status",
                                                    "Y") != 0) {

                                        //:IF FinalGrade < MinimumElectiveGrade AND szFinalGradeString != "S" AND szFinalGradeString != ""
                                        if (FinalGrade < MinimumElectiveGrade
                                                && ZeidonStringCompare(szFinalGradeString, 1, 0, "S", 1, 0,
                                                        21) != 0
                                                && ZeidonStringCompare(szFinalGradeString, 1, 0, "", 1, 0,
                                                        21) != 0) {
                                            //:mDegTrk.CourseType1or2.wCreditsTaken = 0
                                            SetAttributeFromInteger(mDegTrk, "CourseType1or2", "wCreditsTaken",
                                                    0);
                                        }

                                        //:END
                                    }

                                    //:END
                                }

                                //:END
                            }

                            //:END
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

        }

        RESULT = mStudenC.cursor("Registration").setNextContinue().toInt();
        ;
        //:      
        //:END
    }

    //:END

    //:// Make another pass and add any repeated Courses to the entry representing the superceding Course.
    //:// We will duplicate the original line and show as "Repeated" with 0 Credits.
    //:FOR EACH mStudenC.Registration 
    //:                          WHERE mStudenC.Registration.Status = "C"    // Completed
    //:                             OR mStudenC.Registration.Status = "T"    // Currently Taking
    //:                             OR mStudenC.Registration.Status = "V"    // Waived
    //:                             OR mStudenC.Registration.Status = "F"    // Transferred
    //:                             OR mStudenC.Registration.Status = "X"    // L. Transferred
    //:                             OR mStudenC.Registration.Status = "Y"    // L. Waived
    //:                             OR mStudenC.Registration.Status = "P"    // Pre-Transferred
    RESULT = mStudenC.cursor("Registration").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        if (CompareAttributeToString(mStudenC, "Registration", "Status", "C") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "T") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "V") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "F") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "X") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "Y") == 0
                || CompareAttributeToString(mStudenC, "Registration", "Status", "P") == 0) {

            //:IF mStudenC.Registration.wRepeatedClass = "R" OR mStudenC.Registration.wRepeatedClass = "AR"
            if (CompareAttributeToString(mStudenC, "Registration", "wRepeatedClass", "R") == 0
                    || CompareAttributeToString(mStudenC, "Registration", "wRepeatedClass", "AR") == 0) {
                //:IF mStudenC.RegistrationClass EXISTS
                lTempInteger_40 = CheckExistenceOfEntity(mStudenC, "RegistrationClass");
                if (lTempInteger_40 == 0) {
                    //:IF mStudenC.Registration.ManuallyRepeatingRegistrationID = ""
                    if (CompareAttributeToString(mStudenC, "Registration", "ManuallyRepeatingRegistrationID",
                            "") == 0) {
                        //:IF mStudenC.CrossListedCourse EXISTS
                        lTempInteger_41 = CheckExistenceOfEntity(mStudenC, "CrossListedCourse");
                        if (lTempInteger_41 == 0) {
                            //:CourseID = mStudenC.CrossListedCourse.ID 
                            {
                                MutableInt mi_CourseID = new MutableInt(CourseID);
                                GetIntegerFromAttribute(mi_CourseID, mStudenC, "CrossListedCourse", "ID");
                                CourseID = mi_CourseID.intValue();
                            }
                            //:ELSE
                        } else {
                            //:CourseID = mStudenC.RegistrationCourse.ID
                            {
                                MutableInt mi_CourseID = new MutableInt(CourseID);
                                GetIntegerFromAttribute(mi_CourseID, mStudenC, "RegistrationCourse", "ID");
                                CourseID = mi_CourseID.intValue();
                            }
                        }

                        //:END
                        //:ELSE
                    } else {
                        //:CreateViewFromView( mStudenCT, mStudenC )
                        CreateViewFromView(mStudenCT, mStudenC);
                        //:SET CURSOR FIRST mStudenCT.Registration WHERE 
                        //:              mStudenCT.Registration.ID = mStudenC.Registration.ManuallyRepeatingRegistrationID 
                        {
                            MutableInt mi_lTempInteger_42 = new MutableInt(lTempInteger_42);
                            GetIntegerFromAttribute(mi_lTempInteger_42, mStudenC, "Registration",
                                    "ManuallyRepeatingRegistrationID");
                            lTempInteger_42 = mi_lTempInteger_42.intValue();
                        }
                        RESULT = mStudenCT.cursor("Registration").setFirst("ID", lTempInteger_42).toInt();
                        //:IF mStudenCT.EquivalentCourse EXISTS
                        lTempInteger_43 = CheckExistenceOfEntity(mStudenCT, "EquivalentCourse");
                        if (lTempInteger_43 == 0) {
                            //:CourseID = mStudenCT.EquivalentCourse.ID 
                            {
                                MutableInt mi_CourseID = new MutableInt(CourseID);
                                GetIntegerFromAttribute(mi_CourseID, mStudenCT, "EquivalentCourse", "ID");
                                CourseID = mi_CourseID.intValue();
                            }
                            //:ELSE
                        } else {
                            //:IF mStudenCT.CrossListedCourse EXISTS
                            lTempInteger_44 = CheckExistenceOfEntity(mStudenCT, "CrossListedCourse");
                            if (lTempInteger_44 == 0) {
                                //:CourseID = mStudenCT.CrossListedCourse.ID 
                                {
                                    MutableInt mi_CourseID = new MutableInt(CourseID);
                                    GetIntegerFromAttribute(mi_CourseID, mStudenCT, "CrossListedCourse", "ID");
                                    CourseID = mi_CourseID.intValue();
                                }
                                //:ELSE
                            } else {
                                //:CourseID = mStudenCT.RegistrationCourse.ID
                                {
                                    MutableInt mi_CourseID = new MutableInt(CourseID);
                                    GetIntegerFromAttribute(mi_CourseID, mStudenCT, "RegistrationCourse", "ID");
                                    CourseID = mi_CourseID.intValue();
                                }
                            }

                            //:END
                        }

                        //:END
                        //:DropView( mStudenCT )
                        DropView(mStudenCT);
                    }

                    //:END
                    //:CourseNumber = mStudenC.RegistrationCourse.Number 
                    {
                        MutableInt mi_lTempInteger_45 = new MutableInt(lTempInteger_45);
                        StringBuilder sb_CourseNumber;
                        if (CourseNumber == null)
                            sb_CourseNumber = new StringBuilder(32);
                        else
                            sb_CourseNumber = new StringBuilder(CourseNumber);
                        GetVariableFromAttribute(sb_CourseNumber, mi_lTempInteger_45, 'S', 11, mStudenC,
                                "RegistrationCourse", "Number", "", 0);
                        lTempInteger_45 = mi_lTempInteger_45.intValue();
                        CourseNumber = sb_CourseNumber.toString();
                    }
                    //:IF mStudenC.CourseTopic EXISTS
                    lTempInteger_46 = CheckExistenceOfEntity(mStudenC, "CourseTopic");
                    if (lTempInteger_46 == 0) {
                        //:CourseTitle  = mStudenC.CourseTopic.Title 
                        {
                            MutableInt mi_lTempInteger_47 = new MutableInt(lTempInteger_47);
                            StringBuilder sb_CourseTitle;
                            if (CourseTitle == null)
                                sb_CourseTitle = new StringBuilder(32);
                            else
                                sb_CourseTitle = new StringBuilder(CourseTitle);
                            GetVariableFromAttribute(sb_CourseTitle, mi_lTempInteger_47, 'S', 51, mStudenC,
                                    "CourseTopic", "Title", "", 0);
                            lTempInteger_47 = mi_lTempInteger_47.intValue();
                            CourseTitle = sb_CourseTitle.toString();
                        }
                        //:ELSE
                    } else {
                        //:CourseTitle  = mStudenC.RegistrationCourse.Title 
                        {
                            MutableInt mi_lTempInteger_48 = new MutableInt(lTempInteger_48);
                            StringBuilder sb_CourseTitle;
                            if (CourseTitle == null)
                                sb_CourseTitle = new StringBuilder(32);
                            else
                                sb_CourseTitle = new StringBuilder(CourseTitle);
                            GetVariableFromAttribute(sb_CourseTitle, mi_lTempInteger_48, 'S', 51, mStudenC,
                                    "RegistrationCourse", "Title", "", 0);
                            lTempInteger_48 = mi_lTempInteger_48.intValue();
                            CourseTitle = sb_CourseTitle.toString();
                        }
                    }

                    //:END
                    //:ELSE
                } else {
                    //:IF mStudenC.EquivalentCourse EXISTS
                    lTempInteger_49 = CheckExistenceOfEntity(mStudenC, "EquivalentCourse");
                    if (lTempInteger_49 == 0) {
                        //:CourseID     = mStudenC.EquivalentCourse.ID 
                        {
                            MutableInt mi_CourseID = new MutableInt(CourseID);
                            GetIntegerFromAttribute(mi_CourseID, mStudenC, "EquivalentCourse", "ID");
                            CourseID = mi_CourseID.intValue();
                        }
                        //:CourseNumber = mStudenC.EquivalentCourse.Number 
                        {
                            MutableInt mi_lTempInteger_50 = new MutableInt(lTempInteger_50);
                            StringBuilder sb_CourseNumber;
                            if (CourseNumber == null)
                                sb_CourseNumber = new StringBuilder(32);
                            else
                                sb_CourseNumber = new StringBuilder(CourseNumber);
                            GetVariableFromAttribute(sb_CourseNumber, mi_lTempInteger_50, 'S', 11, mStudenC,
                                    "EquivalentCourse", "Number", "", 0);
                            lTempInteger_50 = mi_lTempInteger_50.intValue();
                            CourseNumber = sb_CourseNumber.toString();
                        }
                        //:CourseTitle  = mStudenC.EquivalentCourse.Title 
                        {
                            MutableInt mi_lTempInteger_51 = new MutableInt(lTempInteger_51);
                            StringBuilder sb_CourseTitle;
                            if (CourseTitle == null)
                                sb_CourseTitle = new StringBuilder(32);
                            else
                                sb_CourseTitle = new StringBuilder(CourseTitle);
                            GetVariableFromAttribute(sb_CourseTitle, mi_lTempInteger_51, 'S', 51, mStudenC,
                                    "EquivalentCourse", "Title", "", 0);
                            lTempInteger_51 = mi_lTempInteger_51.intValue();
                            CourseTitle = sb_CourseTitle.toString();
                        }
                        //:ELSE
                    } else {
                        //:CourseID = 0
                        CourseID = 0;
                    }

                    //:END
                }

                //:END

                //:IF CourseID != 0
                if (CourseID != 0) {
                    //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack
                    //:        WHERE mDegTrk.CourseType1or2.wCourseSatisfyingID = CourseID
                    RESULT = mDegTrk.cursor("CourseType1or2")
                            .setFirst("wCourseSatisfyingID", CourseID, "DegreeTrack").toInt();
                    //:        //WHERE mDegTrk.CourseType1or2.ID = CourseID
                    //:        //  AND mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = "Y"
                    //:IF RESULT >= zCURSOR_SET
                    if (RESULT >= zCURSOR_SET) {
                        //:// Repeated course for CourseType1or2
                        //:CREATE ENTITY mDegTrk.RequiredGroupCourseType1or2 
                        RESULT = CreateEntity(mDegTrk, "RequiredGroupCourseType1or2", zPOS_AFTER);
                        //:CREATE ENTITY mDegTrk.CourseType1or2
                        RESULT = CreateEntity(mDegTrk, "CourseType1or2", zPOS_AFTER);
                        //:mDegTrk.CourseType1or2.ID     = CourseID
                        SetAttributeFromInteger(mDegTrk, "CourseType1or2", "ID", CourseID);
                        //:mDegTrk.CourseType1or2.Number = CourseNumber
                        SetAttributeFromString(mDegTrk, "CourseType1or2", "Number", CourseNumber);
                        //:mDegTrk.CourseType1or2.Title  = CourseTitle
                        SetAttributeFromString(mDegTrk, "CourseType1or2", "Title", CourseTitle);
                        //:mDegTrk.CourseType1or2.wCourseStatus = "Repeated"
                        SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "Repeated");
                        //:mDegTrk.CourseType1or2.wFinalGrade   = mStudenC.Registration.FinalGrade
                        SetAttributeFromAttribute(mDegTrk, "CourseType1or2", "wFinalGrade", mStudenC,
                                "Registration", "FinalGrade");
                        //:mDegTrk.CourseType1or2.wCreditsTaken = 0
                        SetAttributeFromInteger(mDegTrk, "CourseType1or2", "wCreditsTaken", 0);
                        //:mDegTrk.CourseType1or2.wRegistrationSatisfyingID = mStudenC.Registration.ID
                        SetAttributeFromAttribute(mDegTrk, "CourseType1or2", "wRegistrationSatisfyingID",
                                mStudenC, "Registration", "ID");
                        //:ELSE
                    } else {
                        //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack
                        //:        WHERE mDegTrk.CourseType3or4.wCourseSatisfyingID = CourseID
                        RESULT = mDegTrk.cursor("CourseType3or4")
                                .setFirst("wCourseSatisfyingID", CourseID, "DegreeTrack").toInt();
                        //:        //WHERE mDegTrk.CourseType3or4.ID = CourseID
                        //:        //  AND mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = "Y"
                        //:IF RESULT >= zCURSOR_SET
                        if (RESULT >= zCURSOR_SET) {
                            //:// Repeated course for CourseType3or4
                            //:CREATE ENTITY mDegTrk.RequiredGroupCourseType3or4 
                            RESULT = CreateEntity(mDegTrk, "RequiredGroupCourseType3or4", zPOS_AFTER);
                            //:CREATE ENTITY mDegTrk.CourseType3or4
                            RESULT = CreateEntity(mDegTrk, "CourseType3or4", zPOS_AFTER);
                            //:mDegTrk.CourseType3or4.ID     = CourseID
                            SetAttributeFromInteger(mDegTrk, "CourseType3or4", "ID", CourseID);
                            //:mDegTrk.CourseType3or4.Number = CourseNumber
                            SetAttributeFromString(mDegTrk, "CourseType3or4", "Number", CourseNumber);
                            //:mDegTrk.CourseType3or4.Title  = CourseTitle
                            SetAttributeFromString(mDegTrk, "CourseType3or4", "Title", CourseTitle);
                            //:mDegTrk.CourseType3or4.wCourseStatus = "Repeated"
                            SetAttributeFromString(mDegTrk, "CourseType3or4", "wCourseStatus", "Repeated");
                            //:mDegTrk.CourseType3or4.wFinalGrade   = mStudenC.Registration.FinalGrade
                            SetAttributeFromAttribute(mDegTrk, "CourseType3or4", "wFinalGrade", mStudenC,
                                    "Registration", "FinalGrade");
                            //:mDegTrk.CourseType3or4.wCreditsTaken = 0
                            SetAttributeFromInteger(mDegTrk, "CourseType3or4", "wCreditsTaken", 0);
                            //:mDegTrk.CourseType3or4.wRegistrationSatisfyingID = mStudenC.Registration.ID
                            SetAttributeFromAttribute(mDegTrk, "CourseType3or4", "wRegistrationSatisfyingID",
                                    mStudenC, "Registration", "ID");
                            //:ELSE
                        } else {
                            //:SET CURSOR FIRST mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack 
                            //:        WHERE mDegTrk.RequiredGroup.Type = "D"
                            RESULT = mDegTrk.cursor("RequiredGroup").setFirst("Type", "D", "DegreeTrack")
                                    .toInt();
                            //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                            //:        WHERE mDegTrk.CourseType1or2.ID = CourseID
                            RESULT = mDegTrk.cursor("CourseType1or2").setFirst("ID", CourseID, "RequiredGroup")
                                    .toInt();
                            //:IF RESULT >= zCURSOR_SET
                            if (RESULT >= zCURSOR_SET) {
                                //:// Repeated course for Development course
                                //:CREATE ENTITY mDegTrk.RequiredGroupCourseType1or2 
                                RESULT = CreateEntity(mDegTrk, "RequiredGroupCourseType1or2", zPOS_AFTER);
                                //:CREATE ENTITY mDegTrk.CourseType1or2
                                RESULT = CreateEntity(mDegTrk, "CourseType1or2", zPOS_AFTER);
                                //:mDegTrk.CourseType1or2.ID     = CourseID                         
                                SetAttributeFromInteger(mDegTrk, "CourseType1or2", "ID", CourseID);
                                //:mDegTrk.CourseType1or2.Number = CourseNumber
                                SetAttributeFromString(mDegTrk, "CourseType1or2", "Number", CourseNumber);
                                //:mDegTrk.CourseType1or2.Title  = CourseTitle 
                                SetAttributeFromString(mDegTrk, "CourseType1or2", "Title", CourseTitle);
                                //:mDegTrk.CourseType1or2.wCourseStatus = "Repeated"
                                SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "Repeated");
                                //:mDegTrk.CourseType1or2.wFinalGrade   = mStudenC.Registration.FinalGrade
                                SetAttributeFromAttribute(mDegTrk, "CourseType1or2", "wFinalGrade", mStudenC,
                                        "Registration", "FinalGrade");
                                //:mDegTrk.CourseType1or2.wCreditsTaken = 0
                                SetAttributeFromInteger(mDegTrk, "CourseType1or2", "wCreditsTaken", 0);
                                //:mDegTrk.CourseType1or2.wRegistrationSatisfyingID = mStudenC.Registration.ID
                                SetAttributeFromAttribute(mDegTrk, "CourseType1or2",
                                        "wRegistrationSatisfyingID", mStudenC, "Registration", "ID");
                                //:ELSE
                            } else {
                                //:// Duplicate entry where the CourseID does not match.
                                //:Msg = "There is a duplicate Course Number or otherwise erroneous Course entry for " + 
                                //:   CourseNumber  + NEW_LINE +
                                //:   "The repeated entry for the Course is not being considered in the Audit."
                                {
                                    StringBuilder sb_Msg;
                                    if (Msg == null)
                                        sb_Msg = new StringBuilder(32);
                                    else
                                        sb_Msg = new StringBuilder(Msg);
                                    ZeidonStringCopy(sb_Msg, 1, 0,
                                            "There is a duplicate Course Number or otherwise erroneous Course entry for ",
                                            1, 0, 201);
                                    Msg = sb_Msg.toString();
                                }
                                {
                                    StringBuilder sb_Msg;
                                    if (Msg == null)
                                        sb_Msg = new StringBuilder(32);
                                    else
                                        sb_Msg = new StringBuilder(Msg);
                                    ZeidonStringConcat(sb_Msg, 1, 0, CourseNumber, 1, 0, 201);
                                    Msg = sb_Msg.toString();
                                }
                                {
                                    StringBuilder sb_Msg;
                                    if (Msg == null)
                                        sb_Msg = new StringBuilder(32);
                                    else
                                        sb_Msg = new StringBuilder(Msg);
                                    ZeidonStringConcat(sb_Msg, 1, 0, NEW_LINE, 1, 0, 201);
                                    Msg = sb_Msg.toString();
                                }
                                {
                                    StringBuilder sb_Msg;
                                    if (Msg == null)
                                        sb_Msg = new StringBuilder(32);
                                    else
                                        sb_Msg = new StringBuilder(Msg);
                                    ZeidonStringConcat(sb_Msg, 1, 0,
                                            "The repeated entry for the Course is not being considered in the Audit.",
                                            1, 0, 201);
                                    Msg = sb_Msg.toString();
                                }
                                //:MessageSend( mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 )
                                MessageSend(mStudenC, "", "Degree Audit", Msg, zMSGQ_OBJECT_CONSTRAINT_ERROR,
                                        0);
                            }

                            //:END
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

        }

        RESULT = mStudenC.cursor("Registration").setNextContinue().toInt();
        ;
        //:END
    }

    //:END

    //:// Evaluate the courses that have been flagged against the degree audit requirements.
    //:TotalDegreeTrackCreditsTaken = 0
    TotalDegreeTrackCreditsTaken = 0;
    //:TotalDegreeTrackCreditsEarned = 0
    TotalDegreeTrackCreditsEarned = 0;
    //:FOR EACH mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack 
    RESULT = mDegTrk.cursor("RequiredGroup").setFirst("DegreeTrack").toInt();
    while (RESULT > zCURSOR_UNCHANGED) {

        //: // Group Type 1: All courses are required.

        //: IF mDegTrk.RequiredGroup.Type = "1"
        if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "1") == 0) {

            //: CourseCount          = 0
            CourseCount = 0;
            //: CourseTakenCount     = 0
            CourseTakenCount = 0;
            //: CourseCompletedCount = 0
            CourseCompletedCount = 0;
            //: CreditsTaken         = 0
            CreditsTaken = 0;
            //: FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup 
            RESULT = mDegTrk.cursor("CourseType1or2").setFirst("RequiredGroup").toInt();
            while (RESULT > zCURSOR_UNCHANGED) {
                //: IF mDegTrk.CourseType1or2.wCourseStatus != "Repeated"
                if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wCourseStatus", "Repeated") != 0) {
                    //: CourseCount = CourseCount + 1
                    CourseCount = CourseCount + 1;
                    //: IF mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = "Y"
                    if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wDegreeAuditCourseTaken",
                            "Y") == 0) {
                        //: CourseTakenCount = CourseTakenCount + 1
                        CourseTakenCount = CourseTakenCount + 1;
                        //: CreditsTaken = CreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken 
                        {
                            MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                            GetDecimalFromAttribute(md_dTempDecimal_0, mDegTrk, "CourseType1or2",
                                    "wCreditsTaken");
                            dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
                        }
                        CreditsTaken = CreditsTaken + dTempDecimal_0;
                    }

                    //: END
                    //: TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken
                    {
                        MutableDouble md_dTempDecimal_1 = new MutableDouble(dTempDecimal_1);
                        GetDecimalFromAttribute(md_dTempDecimal_1, mDegTrk, "CourseType1or2", "wCreditsTaken");
                        dTempDecimal_1 = md_dTempDecimal_1.doubleValue();
                    }
                    TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + dTempDecimal_1;
                    //: IF mDegTrk.CourseType1or2.wDegreeAuditCourseCompleted = "Y"
                    if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wDegreeAuditCourseCompleted",
                            "Y") == 0) {
                        //: CourseCompletedCount = CourseCompletedCount + 1
                        CourseCompletedCount = CourseCompletedCount + 1;
                        //: TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + mDegTrk.CourseType1or2.wCreditsTaken
                        {
                            MutableDouble md_dTempDecimal_2 = new MutableDouble(dTempDecimal_2);
                            GetDecimalFromAttribute(md_dTempDecimal_2, mDegTrk, "CourseType1or2",
                                    "wCreditsTaken");
                            dTempDecimal_2 = md_dTempDecimal_2.doubleValue();
                        }
                        TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + dTempDecimal_2;
                    }

                    //: END
                }

                RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                ;
                //: END
            }

            //: END
            //: szCourseTakenCount = CourseTakenCount
            {
                StringBuilder sb_szCourseTakenCount;
                if (szCourseTakenCount == null)
                    sb_szCourseTakenCount = new StringBuilder(32);
                else
                    sb_szCourseTakenCount = new StringBuilder(szCourseTakenCount);
                ZeidonStringConvertFromNumber(sb_szCourseTakenCount, 1, 0, 5, CourseTakenCount, (double) 0.0,
                        "I");
                szCourseTakenCount = sb_szCourseTakenCount.toString();
            }
            //: szCourseCount      = CourseCount
            {
                StringBuilder sb_szCourseCount;
                if (szCourseCount == null)
                    sb_szCourseCount = new StringBuilder(32);
                else
                    sb_szCourseCount = new StringBuilder(szCourseCount);
                ZeidonStringConvertFromNumber(sb_szCourseCount, 1, 0, 5, CourseCount, (double) 0.0, "I");
                szCourseCount = sb_szCourseCount.toString();
            }
            //: IF mDegTrk.RequiredGroup.wDegreeAuditHasTakingFlag = "Y"
            if (CompareAttributeToString(mDegTrk, "RequiredGroup", "wDegreeAuditHasTakingFlag", "Y") == 0) {
                //: mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                //:                  "  (" + szCourseTakenCount + " of " + szCourseCount + " courses completed/enrolled)"
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    GetStringFromAttribute(sb_szTempString_2, mDegTrk, "RequiredGroup", "dReportValue");
                    szTempString_2 = sb_szTempString_2.toString();
                }
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    ZeidonStringConcat(sb_szTempString_2, 1, 0, "  (", 1, 0, 255);
                    szTempString_2 = sb_szTempString_2.toString();
                }
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    ZeidonStringConcat(sb_szTempString_2, 1, 0, szCourseTakenCount, 1, 0, 255);
                    szTempString_2 = sb_szTempString_2.toString();
                }
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    ZeidonStringConcat(sb_szTempString_2, 1, 0, " of ", 1, 0, 255);
                    szTempString_2 = sb_szTempString_2.toString();
                }
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    ZeidonStringConcat(sb_szTempString_2, 1, 0, szCourseCount, 1, 0, 255);
                    szTempString_2 = sb_szTempString_2.toString();
                }
                {
                    StringBuilder sb_szTempString_2;
                    if (szTempString_2 == null)
                        sb_szTempString_2 = new StringBuilder(32);
                    else
                        sb_szTempString_2 = new StringBuilder(szTempString_2);
                    ZeidonStringConcat(sb_szTempString_2, 1, 0, " courses completed/enrolled)", 1, 0, 255);
                    szTempString_2 = sb_szTempString_2.toString();
                }
                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value", szTempString_2);
                //:ELSE
            } else {
                //: mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                //:                  "  (" + szCourseTakenCount + " of " + szCourseCount + " courses completed)"
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    GetStringFromAttribute(sb_szTempString_3, mDegTrk, "RequiredGroup", "dReportValue");
                    szTempString_3 = sb_szTempString_3.toString();
                }
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    ZeidonStringConcat(sb_szTempString_3, 1, 0, "  (", 1, 0, 255);
                    szTempString_3 = sb_szTempString_3.toString();
                }
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    ZeidonStringConcat(sb_szTempString_3, 1, 0, szCourseTakenCount, 1, 0, 255);
                    szTempString_3 = sb_szTempString_3.toString();
                }
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    ZeidonStringConcat(sb_szTempString_3, 1, 0, " of ", 1, 0, 255);
                    szTempString_3 = sb_szTempString_3.toString();
                }
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    ZeidonStringConcat(sb_szTempString_3, 1, 0, szCourseCount, 1, 0, 255);
                    szTempString_3 = sb_szTempString_3.toString();
                }
                {
                    StringBuilder sb_szTempString_3;
                    if (szTempString_3 == null)
                        sb_szTempString_3 = new StringBuilder(32);
                    else
                        sb_szTempString_3 = new StringBuilder(szTempString_3);
                    ZeidonStringConcat(sb_szTempString_3, 1, 0, " courses completed)", 1, 0, 255);
                    szTempString_3 = sb_szTempString_3.toString();
                }
                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value", szTempString_3);
            }

            //: END 
            //: IF CourseCompletedCount >= CourseCount
            if (CourseCompletedCount >= CourseCount) {
                //: mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
                //:ELSE
            } else {
                //: IF CourseTakenCount >= CourseCount
                if (CourseTakenCount >= CourseCount) {
                    //: mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "T");
                    //:ELSE
                } else {
                    //: mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "N");
                }

                //: END
            }

            //: END
            //: mDegTrk.RequiredGroup.wDegreeAuditTotalCreditsTaken = CreditsTaken
            SetAttributeFromDecimal(mDegTrk, "RequiredGroup", "wDegreeAuditTotalCreditsTaken", CreditsTaken);

            //:// Group Type 2: A minimum number of credits is required for courses in the group.

            //:ELSE
        } else {
            //:IF mDegTrk.RequiredGroup.Type = "2"
            if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "2") == 0) {

                //:CreditsTaken     = 0
                CreditsTaken = 0;
                //:CreditsCompleted = 0
                CreditsCompleted = 0;
                //:FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                RESULT = mDegTrk.cursor("CourseType1or2").setFirst("RequiredGroup").toInt();
                while (RESULT > zCURSOR_UNCHANGED) {
                    //:IF mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = "Y"
                    if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wDegreeAuditCourseTaken",
                            "Y") == 0) {
                        //:CreditsTaken = CreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken 
                        {
                            MutableDouble md_dTempDecimal_3 = new MutableDouble(dTempDecimal_3);
                            GetDecimalFromAttribute(md_dTempDecimal_3, mDegTrk, "CourseType1or2",
                                    "wCreditsTaken");
                            dTempDecimal_3 = md_dTempDecimal_3.doubleValue();
                        }
                        CreditsTaken = CreditsTaken + dTempDecimal_3;
                    }

                    //:END
                    //:TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken
                    {
                        MutableDouble md_dTempDecimal_4 = new MutableDouble(dTempDecimal_4);
                        GetDecimalFromAttribute(md_dTempDecimal_4, mDegTrk, "CourseType1or2", "wCreditsTaken");
                        dTempDecimal_4 = md_dTempDecimal_4.doubleValue();
                    }
                    TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + dTempDecimal_4;
                    //:IF mDegTrk.CourseType1or2.wDegreeAuditCourseCompleted = "Y"
                    if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wDegreeAuditCourseCompleted",
                            "Y") == 0) {
                        //:CreditsCompleted = CreditsCompleted + mDegTrk.CourseType1or2.wCreditsTaken
                        {
                            MutableDouble md_dTempDecimal_5 = new MutableDouble(dTempDecimal_5);
                            GetDecimalFromAttribute(md_dTempDecimal_5, mDegTrk, "CourseType1or2",
                                    "wCreditsTaken");
                            dTempDecimal_5 = md_dTempDecimal_5.doubleValue();
                        }
                        CreditsCompleted = CreditsCompleted + dTempDecimal_5;
                        //:TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + mDegTrk.CourseType1or2.wCreditsTaken
                        {
                            MutableDouble md_dTempDecimal_6 = new MutableDouble(dTempDecimal_6);
                            GetDecimalFromAttribute(md_dTempDecimal_6, mDegTrk, "CourseType1or2",
                                    "wCreditsTaken");
                            dTempDecimal_6 = md_dTempDecimal_6.doubleValue();
                        }
                        TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + dTempDecimal_6;
                    }

                    RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                    ;
                    //:END
                }

                //:END
                //:szCreditsNeeded = mDegTrk.RequiredGroup.TotalRequiredCredits
                {
                    MutableInt mi_lTempInteger_52 = new MutableInt(lTempInteger_52);
                    StringBuilder sb_szCreditsNeeded;
                    if (szCreditsNeeded == null)
                        sb_szCreditsNeeded = new StringBuilder(32);
                    else
                        sb_szCreditsNeeded = new StringBuilder(szCreditsNeeded);
                    GetVariableFromAttribute(sb_szCreditsNeeded, mi_lTempInteger_52, 'S', 11, mDegTrk,
                            "RequiredGroup", "TotalRequiredCredits", "", 0);
                    lTempInteger_52 = mi_lTempInteger_52.intValue();
                    szCreditsNeeded = sb_szCreditsNeeded.toString();
                }
                //:szCreditsTaken  = CreditsTaken
                {
                    StringBuilder sb_szCreditsTaken;
                    if (szCreditsTaken == null)
                        sb_szCreditsTaken = new StringBuilder(32);
                    else
                        sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                    ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, CreditsTaken, "D");
                    szCreditsTaken = sb_szCreditsTaken.toString();
                }
                //:IF mDegTrk.RequiredGroup.wDegreeAuditHasTakingFlag = "Y"
                if (CompareAttributeToString(mDegTrk, "RequiredGroup", "wDegreeAuditHasTakingFlag", "Y") == 0) {
                    //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                    //:               "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed/enrolled.)"
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        GetStringFromAttribute(sb_szTempString_4, mDegTrk, "RequiredGroup", "dReportValue");
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        ZeidonStringConcat(sb_szTempString_4, 1, 0, "  (", 1, 0, 255);
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        ZeidonStringConcat(sb_szTempString_4, 1, 0, szCreditsTaken, 1, 0, 255);
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        ZeidonStringConcat(sb_szTempString_4, 1, 0, " of ", 1, 0, 255);
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        ZeidonStringConcat(sb_szTempString_4, 1, 0, szCreditsNeeded, 1, 0, 255);
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    {
                        StringBuilder sb_szTempString_4;
                        if (szTempString_4 == null)
                            sb_szTempString_4 = new StringBuilder(32);
                        else
                            sb_szTempString_4 = new StringBuilder(szTempString_4);
                        ZeidonStringConcat(sb_szTempString_4, 1, 0, " credits completed/enrolled.)", 1, 0, 255);
                        szTempString_4 = sb_szTempString_4.toString();
                    }
                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value", szTempString_4);
                    //:ELSE
                } else {
                    //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                    //:               "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed.)"
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        GetStringFromAttribute(sb_szTempString_5, mDegTrk, "RequiredGroup", "dReportValue");
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        ZeidonStringConcat(sb_szTempString_5, 1, 0, "  (", 1, 0, 255);
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        ZeidonStringConcat(sb_szTempString_5, 1, 0, szCreditsTaken, 1, 0, 255);
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        ZeidonStringConcat(sb_szTempString_5, 1, 0, " of ", 1, 0, 255);
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        ZeidonStringConcat(sb_szTempString_5, 1, 0, szCreditsNeeded, 1, 0, 255);
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    {
                        StringBuilder sb_szTempString_5;
                        if (szTempString_5 == null)
                            sb_szTempString_5 = new StringBuilder(32);
                        else
                            sb_szTempString_5 = new StringBuilder(szTempString_5);
                        ZeidonStringConcat(sb_szTempString_5, 1, 0, " credits completed.)", 1, 0, 255);
                        szTempString_5 = sb_szTempString_5.toString();
                    }
                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value", szTempString_5);
                }

                //:END
                //:IF CreditsCompleted >= mDegTrk.RequiredGroup.TotalRequiredCredits
                if (CompareAttributeToDecimal(mDegTrk, "RequiredGroup", "TotalRequiredCredits",
                        CreditsCompleted) <= 0) {
                    //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
                    //:ELSE
                } else {
                    //:IF CreditsTaken >= mDegTrk.RequiredGroup.TotalRequiredCredits
                    if (CompareAttributeToDecimal(mDegTrk, "RequiredGroup", "TotalRequiredCredits",
                            CreditsTaken) <= 0) {
                        //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "T");
                        //:ELSE
                    } else {
                        //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "N");
                    }

                    //:END
                }

                //:END
                //:mDegTrk.RequiredGroup.wDegreeAuditTotalCreditsTaken = CreditsTaken
                SetAttributeFromDecimal(mDegTrk, "RequiredGroup", "wDegreeAuditTotalCreditsTaken",
                        CreditsTaken);

                //:// Group Type 3: The same as Group Type 2, except that all courses exist under subgroups,
                //://               where each subgroup defines the minimum number of credits that must be
                //://               taken from the courses under it. All courses must be defined under a subgroup.

                //:ELSE
            } else {
                //:IF mDegTrk.RequiredGroup.Type = "3"
                if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "3") == 0) {

                    //:CreditsTaken     = 0
                    CreditsTaken = 0;
                    //:CreditsCompleted = 0
                    CreditsCompleted = 0;
                    //:FOR EACH mDegTrk.RequiredSubGroup
                    RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst().toInt();
                    while (RESULT > zCURSOR_UNCHANGED) {
                        //:MinCreditsTaken     = 0
                        MinCreditsTaken = 0;
                        //:MinCreditsCompleted = 0
                        MinCreditsCompleted = 0;
                        //:FOR EACH mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredSubGroup
                        RESULT = mDegTrk.cursor("CourseType3or4").setFirst("RequiredSubGroup").toInt();
                        while (RESULT > zCURSOR_UNCHANGED) {
                            //:IF mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = "Y"
                            if (CompareAttributeToString(mDegTrk, "CourseType3or4", "wDegreeAuditCourseTaken",
                                    "Y") == 0) {
                                //:CreditsTaken    = CreditsTaken + mDegTrk.CourseType3or4.wCreditsTaken 
                                {
                                    MutableDouble md_dTempDecimal_7 = new MutableDouble(dTempDecimal_7);
                                    GetDecimalFromAttribute(md_dTempDecimal_7, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_7 = md_dTempDecimal_7.doubleValue();
                                }
                                CreditsTaken = CreditsTaken + dTempDecimal_7;
                                //:MinCreditsTaken = MinCreditsTaken + mDegTrk.CourseType3or4.wCreditsTaken
                                {
                                    MutableDouble md_dTempDecimal_8 = new MutableDouble(dTempDecimal_8);
                                    GetDecimalFromAttribute(md_dTempDecimal_8, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_8 = md_dTempDecimal_8.doubleValue();
                                }
                                MinCreditsTaken = MinCreditsTaken + dTempDecimal_8;
                            }

                            //:END
                            //:TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + mDegTrk.CourseType3or4.wCreditsTaken
                            {
                                MutableDouble md_dTempDecimal_9 = new MutableDouble(dTempDecimal_9);
                                GetDecimalFromAttribute(md_dTempDecimal_9, mDegTrk, "CourseType3or4",
                                        "wCreditsTaken");
                                dTempDecimal_9 = md_dTempDecimal_9.doubleValue();
                            }
                            TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + dTempDecimal_9;
                            //:IF mDegTrk.CourseType3or4.wDegreeAuditCourseCompleted = "Y"
                            if (CompareAttributeToString(mDegTrk, "CourseType3or4",
                                    "wDegreeAuditCourseCompleted", "Y") == 0) {
                                //:CreditsCompleted    = CreditsCompleted + mDegTrk.CourseType3or4.wCreditsTaken 
                                {
                                    MutableDouble md_dTempDecimal_10 = new MutableDouble(dTempDecimal_10);
                                    GetDecimalFromAttribute(md_dTempDecimal_10, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_10 = md_dTempDecimal_10.doubleValue();
                                }
                                CreditsCompleted = CreditsCompleted + dTempDecimal_10;
                                //:MinCreditsCompleted = MinCreditsCompleted + mDegTrk.CourseType3or4.wCreditsTaken
                                {
                                    MutableDouble md_dTempDecimal_11 = new MutableDouble(dTempDecimal_11);
                                    GetDecimalFromAttribute(md_dTempDecimal_11, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_11 = md_dTempDecimal_11.doubleValue();
                                }
                                MinCreditsCompleted = MinCreditsCompleted + dTempDecimal_11;
                                //:TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + mDegTrk.CourseType3or4.wCreditsTaken
                                {
                                    MutableDouble md_dTempDecimal_12 = new MutableDouble(dTempDecimal_12);
                                    GetDecimalFromAttribute(md_dTempDecimal_12, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_12 = md_dTempDecimal_12.doubleValue();
                                }
                                TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + dTempDecimal_12;
                            }

                            RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue().toInt();
                            ;
                            //:END
                        }

                        //:END
                        //:szCreditsNeeded = mDegTrk.RequiredSubGroup.TotalRequiredCredits
                        {
                            MutableInt mi_lTempInteger_53 = new MutableInt(lTempInteger_53);
                            StringBuilder sb_szCreditsNeeded;
                            if (szCreditsNeeded == null)
                                sb_szCreditsNeeded = new StringBuilder(32);
                            else
                                sb_szCreditsNeeded = new StringBuilder(szCreditsNeeded);
                            GetVariableFromAttribute(sb_szCreditsNeeded, mi_lTempInteger_53, 'S', 11, mDegTrk,
                                    "RequiredSubGroup", "TotalRequiredCredits", "", 0);
                            lTempInteger_53 = mi_lTempInteger_53.intValue();
                            szCreditsNeeded = sb_szCreditsNeeded.toString();
                        }
                        //:szCreditsTaken  = MinCreditsTaken
                        {
                            StringBuilder sb_szCreditsTaken;
                            if (szCreditsTaken == null)
                                sb_szCreditsTaken = new StringBuilder(32);
                            else
                                sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                            ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, MinCreditsTaken, "D");
                            szCreditsTaken = sb_szCreditsTaken.toString();
                        }
                        //:IF mDegTrk.RequiredSubGroup.wDegreeAuditHasTakingFlag = "Y"
                        if (CompareAttributeToString(mDegTrk, "RequiredSubGroup", "wDegreeAuditHasTakingFlag",
                                "Y") == 0) {
                            //:mDegTrk.RequiredSubGroup.wDegreeAuditOL_Value = mDegTrk.RequiredSubGroup.dReportValue +
                            //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed/enrolled.)"
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                GetStringFromAttribute(sb_szTempString_6, mDegTrk, "RequiredSubGroup",
                                        "dReportValue");
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                ZeidonStringConcat(sb_szTempString_6, 1, 0, "  (", 1, 0, 255);
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                ZeidonStringConcat(sb_szTempString_6, 1, 0, szCreditsTaken, 1, 0, 255);
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                ZeidonStringConcat(sb_szTempString_6, 1, 0, " of ", 1, 0, 255);
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                ZeidonStringConcat(sb_szTempString_6, 1, 0, szCreditsNeeded, 1, 0, 255);
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            {
                                StringBuilder sb_szTempString_6;
                                if (szTempString_6 == null)
                                    sb_szTempString_6 = new StringBuilder(32);
                                else
                                    sb_szTempString_6 = new StringBuilder(szTempString_6);
                                ZeidonStringConcat(sb_szTempString_6, 1, 0, " credits completed/enrolled.)", 1,
                                        0, 255);
                                szTempString_6 = sb_szTempString_6.toString();
                            }
                            SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditOL_Value",
                                    szTempString_6);
                            //:ELSE
                        } else {
                            //:mDegTrk.RequiredSubGroup.wDegreeAuditOL_Value = mDegTrk.RequiredSubGroup.dReportValue +
                            //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed.)"
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                GetStringFromAttribute(sb_szTempString_7, mDegTrk, "RequiredSubGroup",
                                        "dReportValue");
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                ZeidonStringConcat(sb_szTempString_7, 1, 0, "  (", 1, 0, 255);
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                ZeidonStringConcat(sb_szTempString_7, 1, 0, szCreditsTaken, 1, 0, 255);
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                ZeidonStringConcat(sb_szTempString_7, 1, 0, " of ", 1, 0, 255);
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                ZeidonStringConcat(sb_szTempString_7, 1, 0, szCreditsNeeded, 1, 0, 255);
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            {
                                StringBuilder sb_szTempString_7;
                                if (szTempString_7 == null)
                                    sb_szTempString_7 = new StringBuilder(32);
                                else
                                    sb_szTempString_7 = new StringBuilder(szTempString_7);
                                ZeidonStringConcat(sb_szTempString_7, 1, 0, " credits completed.)", 1, 0, 255);
                                szTempString_7 = sb_szTempString_7.toString();
                            }
                            SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditOL_Value",
                                    szTempString_7);
                        }

                        //:END
                        //:IF MinCreditsCompleted >= mDegTrk.RequiredSubGroup.TotalRequiredCredits
                        if (CompareAttributeToDecimal(mDegTrk, "RequiredSubGroup", "TotalRequiredCredits",
                                MinCreditsCompleted) <= 0) {
                            //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
                            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
                            //:ELSE
                        } else {
                            //:IF MinCreditsTaken >= mDegTrk.RequiredSubGroup.TotalRequiredCredits
                            if (CompareAttributeToDecimal(mDegTrk, "RequiredSubGroup", "TotalRequiredCredits",
                                    MinCreditsTaken) <= 0) {
                                //:mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "T"
                                SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditSatisfied",
                                        "T");
                                //:ELSE
                            } else {
                                //:mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "N"
                                SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditSatisfied",
                                        "N");
                            }

                            //:END
                        }

                        RESULT = mDegTrk.cursor("RequiredSubGroup").setNextContinue().toInt();
                        ;
                        //:END
                    }

                    //:END
                    //:szCreditsNeeded = mDegTrk.RequiredGroup.TotalRequiredCredits
                    {
                        MutableInt mi_lTempInteger_54 = new MutableInt(lTempInteger_54);
                        StringBuilder sb_szCreditsNeeded;
                        if (szCreditsNeeded == null)
                            sb_szCreditsNeeded = new StringBuilder(32);
                        else
                            sb_szCreditsNeeded = new StringBuilder(szCreditsNeeded);
                        GetVariableFromAttribute(sb_szCreditsNeeded, mi_lTempInteger_54, 'S', 11, mDegTrk,
                                "RequiredGroup", "TotalRequiredCredits", "", 0);
                        lTempInteger_54 = mi_lTempInteger_54.intValue();
                        szCreditsNeeded = sb_szCreditsNeeded.toString();
                    }
                    //:szCreditsTaken  = CreditsTaken
                    {
                        StringBuilder sb_szCreditsTaken;
                        if (szCreditsTaken == null)
                            sb_szCreditsTaken = new StringBuilder(32);
                        else
                            sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                        ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, CreditsTaken, "D");
                        szCreditsTaken = sb_szCreditsTaken.toString();
                    }
                    //:IF mDegTrk.RequiredGroup.wDegreeAuditHasTakingFlag = "Y"
                    if (CompareAttributeToString(mDegTrk, "RequiredGroup", "wDegreeAuditHasTakingFlag",
                            "Y") == 0) {
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                        //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed/enrolled.)"
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            GetStringFromAttribute(sb_szTempString_8, mDegTrk, "RequiredGroup", "dReportValue");
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            ZeidonStringConcat(sb_szTempString_8, 1, 0, "  (", 1, 0, 255);
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            ZeidonStringConcat(sb_szTempString_8, 1, 0, szCreditsTaken, 1, 0, 255);
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            ZeidonStringConcat(sb_szTempString_8, 1, 0, " of ", 1, 0, 255);
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            ZeidonStringConcat(sb_szTempString_8, 1, 0, szCreditsNeeded, 1, 0, 255);
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        {
                            StringBuilder sb_szTempString_8;
                            if (szTempString_8 == null)
                                sb_szTempString_8 = new StringBuilder(32);
                            else
                                sb_szTempString_8 = new StringBuilder(szTempString_8);
                            ZeidonStringConcat(sb_szTempString_8, 1, 0, " credits completed/enrolled.)", 1, 0,
                                    255);
                            szTempString_8 = sb_szTempString_8.toString();
                        }
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                szTempString_8);
                        //:ELSE
                    } else {
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                        //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed.)"
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            GetStringFromAttribute(sb_szTempString_9, mDegTrk, "RequiredGroup", "dReportValue");
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            ZeidonStringConcat(sb_szTempString_9, 1, 0, "  (", 1, 0, 255);
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            ZeidonStringConcat(sb_szTempString_9, 1, 0, szCreditsTaken, 1, 0, 255);
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            ZeidonStringConcat(sb_szTempString_9, 1, 0, " of ", 1, 0, 255);
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            ZeidonStringConcat(sb_szTempString_9, 1, 0, szCreditsNeeded, 1, 0, 255);
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        {
                            StringBuilder sb_szTempString_9;
                            if (szTempString_9 == null)
                                sb_szTempString_9 = new StringBuilder(32);
                            else
                                sb_szTempString_9 = new StringBuilder(szTempString_9);
                            ZeidonStringConcat(sb_szTempString_9, 1, 0, " credits completed.)", 1, 0, 255);
                            szTempString_9 = sb_szTempString_9.toString();
                        }
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                szTempString_9);
                    }

                    //:END
                    //:// All subgroups must meet minimums for the group to meet requirements.
                    //:// Add to subgroup display value.
                    //:SET CURSOR FIRST mDegTrk.RequiredSubGroup WHERE mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "N"
                    RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("wDegreeAuditSatisfied", "N").toInt();
                    //:IF RESULT >= zCURSOR_SET
                    if (RESULT >= zCURSOR_SET) {
                        //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "N");
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.wDegreeAuditOL_Value +
                        //:                                        " (Subgroups not met)"
                        {
                            StringBuilder sb_szTempString_10;
                            if (szTempString_10 == null)
                                sb_szTempString_10 = new StringBuilder(32);
                            else
                                sb_szTempString_10 = new StringBuilder(szTempString_10);
                            GetStringFromAttribute(sb_szTempString_10, mDegTrk, "RequiredGroup",
                                    "wDegreeAuditOL_Value");
                            szTempString_10 = sb_szTempString_10.toString();
                        }
                        {
                            StringBuilder sb_szTempString_10;
                            if (szTempString_10 == null)
                                sb_szTempString_10 = new StringBuilder(32);
                            else
                                sb_szTempString_10 = new StringBuilder(szTempString_10);
                            ZeidonStringConcat(sb_szTempString_10, 1, 0, " (Subgroups not met)", 1, 0, 255);
                            szTempString_10 = sb_szTempString_10.toString();
                        }
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                szTempString_10);
                        //:ELSE
                    } else {
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.wDegreeAuditOL_Value +
                        //:                                        " (Subgroups met)"
                        {
                            StringBuilder sb_szTempString_11;
                            if (szTempString_11 == null)
                                sb_szTempString_11 = new StringBuilder(32);
                            else
                                sb_szTempString_11 = new StringBuilder(szTempString_11);
                            GetStringFromAttribute(sb_szTempString_11, mDegTrk, "RequiredGroup",
                                    "wDegreeAuditOL_Value");
                            szTempString_11 = sb_szTempString_11.toString();
                        }
                        {
                            StringBuilder sb_szTempString_11;
                            if (szTempString_11 == null)
                                sb_szTempString_11 = new StringBuilder(32);
                            else
                                sb_szTempString_11 = new StringBuilder(szTempString_11);
                            ZeidonStringConcat(sb_szTempString_11, 1, 0, " (Subgroups met)", 1, 0, 255);
                            szTempString_11 = sb_szTempString_11.toString();
                        }
                        SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                szTempString_11);
                        //:SET CURSOR FIRST mDegTrk.RequiredSubGroup WHERE mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "T"
                        RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("wDegreeAuditSatisfied", "T")
                                .toInt();
                        //:IF RESULT >= zCURSOR_SET
                        if (RESULT >= zCURSOR_SET) {
                            //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
                            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "T");
                            //:ELSE
                        } else {
                            //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
                            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
                        }

                        //:END
                    }

                    //:END
                    //:mDegTrk.RequiredGroup.wDegreeAuditTotalCreditsTaken = CreditsTaken
                    SetAttributeFromDecimal(mDegTrk, "RequiredGroup", "wDegreeAuditTotalCreditsTaken",
                            CreditsTaken);

                    //:// Group Type 4: The same as Group Type 2, except that all courses exist under subgroups,
                    //://               and all the courses in one of the subgroups must be taken. The subgroups are
                    //://               thus evaluated as OR conditions. All courses must be defined under a subgroup.

                    //:ELSE
                } else {
                    //:IF mDegTrk.RequiredGroup.Type = "4"
                    if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "4") == 0) {

                        //:CreditsTaken     = 0
                        CreditsTaken = 0;
                        //:CreditsCompleted = 0
                        CreditsCompleted = 0;
                        //:FOR EACH mDegTrk.RequiredSubGroup
                        RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst().toInt();
                        while (RESULT > zCURSOR_UNCHANGED) {
                            //:szCourseTakenFlag     = "Y"
                            {
                                StringBuilder sb_szCourseTakenFlag;
                                if (szCourseTakenFlag == null)
                                    sb_szCourseTakenFlag = new StringBuilder(32);
                                else
                                    sb_szCourseTakenFlag = new StringBuilder(szCourseTakenFlag);
                                ZeidonStringCopy(sb_szCourseTakenFlag, 1, 0, "Y", 1, 0, 2);
                                szCourseTakenFlag = sb_szCourseTakenFlag.toString();
                            }
                            //:szCourseCompletedFlag = "Y"
                            {
                                StringBuilder sb_szCourseCompletedFlag;
                                if (szCourseCompletedFlag == null)
                                    sb_szCourseCompletedFlag = new StringBuilder(32);
                                else
                                    sb_szCourseCompletedFlag = new StringBuilder(szCourseCompletedFlag);
                                ZeidonStringCopy(sb_szCourseCompletedFlag, 1, 0, "Y", 1, 0, 2);
                                szCourseCompletedFlag = sb_szCourseCompletedFlag.toString();
                            }
                            //:FOR EACH mDegTrk.CourseType3or4 WITHIN mDegTrk.RequiredSubGroup
                            RESULT = mDegTrk.cursor("CourseType3or4").setFirst("RequiredSubGroup").toInt();
                            while (RESULT > zCURSOR_UNCHANGED) {
                                //:IF mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = "Y"
                                if (CompareAttributeToString(mDegTrk, "CourseType3or4",
                                        "wDegreeAuditCourseTaken", "Y") == 0) {
                                    //:CreditsTaken = CreditsTaken + mDegTrk.CourseType3or4.wCreditsTaken 
                                    {
                                        MutableDouble md_dTempDecimal_13 = new MutableDouble(dTempDecimal_13);
                                        GetDecimalFromAttribute(md_dTempDecimal_13, mDegTrk, "CourseType3or4",
                                                "wCreditsTaken");
                                        dTempDecimal_13 = md_dTempDecimal_13.doubleValue();
                                    }
                                    CreditsTaken = CreditsTaken + dTempDecimal_13;
                                    //:ELSE
                                } else {
                                    //:szCourseTakenFlag = "N"
                                    {
                                        StringBuilder sb_szCourseTakenFlag;
                                        if (szCourseTakenFlag == null)
                                            sb_szCourseTakenFlag = new StringBuilder(32);
                                        else
                                            sb_szCourseTakenFlag = new StringBuilder(szCourseTakenFlag);
                                        ZeidonStringCopy(sb_szCourseTakenFlag, 1, 0, "N", 1, 0, 2);
                                        szCourseTakenFlag = sb_szCourseTakenFlag.toString();
                                    }
                                }

                                //:END
                                //:TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + mDegTrk.CourseType3or4.wCreditsTaken
                                {
                                    MutableDouble md_dTempDecimal_14 = new MutableDouble(dTempDecimal_14);
                                    GetDecimalFromAttribute(md_dTempDecimal_14, mDegTrk, "CourseType3or4",
                                            "wCreditsTaken");
                                    dTempDecimal_14 = md_dTempDecimal_14.doubleValue();
                                }
                                TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + dTempDecimal_14;
                                //:IF mDegTrk.CourseType3or4.wDegreeAuditCourseCompleted = "Y"
                                if (CompareAttributeToString(mDegTrk, "CourseType3or4",
                                        "wDegreeAuditCourseCompleted", "Y") == 0) {
                                    //:CreditsCompleted = CreditsCompleted + mDegTrk.CourseType3or4.wCreditsTaken
                                    {
                                        MutableDouble md_dTempDecimal_15 = new MutableDouble(dTempDecimal_15);
                                        GetDecimalFromAttribute(md_dTempDecimal_15, mDegTrk, "CourseType3or4",
                                                "wCreditsTaken");
                                        dTempDecimal_15 = md_dTempDecimal_15.doubleValue();
                                    }
                                    CreditsCompleted = CreditsCompleted + dTempDecimal_15;
                                    //:TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + mDegTrk.CourseType3or4.wCreditsTaken
                                    {
                                        MutableDouble md_dTempDecimal_16 = new MutableDouble(dTempDecimal_16);
                                        GetDecimalFromAttribute(md_dTempDecimal_16, mDegTrk, "CourseType3or4",
                                                "wCreditsTaken");
                                        dTempDecimal_16 = md_dTempDecimal_16.doubleValue();
                                    }
                                    TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned
                                            + dTempDecimal_16;
                                    //:ELSE
                                } else {
                                    //:szCourseCompletedFlag = "N"
                                    {
                                        StringBuilder sb_szCourseCompletedFlag;
                                        if (szCourseCompletedFlag == null)
                                            sb_szCourseCompletedFlag = new StringBuilder(32);
                                        else
                                            sb_szCourseCompletedFlag = new StringBuilder(szCourseCompletedFlag);
                                        ZeidonStringCopy(sb_szCourseCompletedFlag, 1, 0, "N", 1, 0, 2);
                                        szCourseCompletedFlag = sb_szCourseCompletedFlag.toString();
                                    }
                                }

                                RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue().toInt();
                                ;
                                //:END
                            }

                            //:END
                            //:IF szCourseTakenFlag = "Y"
                            if (ZeidonStringCompare(szCourseTakenFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                                //:mDegTrk.RequiredSubGroup.wDegreeAuditOL_Value = mDegTrk.RequiredSubGroup.dReportValue +
                                //:    "  (All courses for subgroup taken.)"
                                {
                                    StringBuilder sb_szTempString_12;
                                    if (szTempString_12 == null)
                                        sb_szTempString_12 = new StringBuilder(32);
                                    else
                                        sb_szTempString_12 = new StringBuilder(szTempString_12);
                                    GetStringFromAttribute(sb_szTempString_12, mDegTrk, "RequiredSubGroup",
                                            "dReportValue");
                                    szTempString_12 = sb_szTempString_12.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_12;
                                    if (szTempString_12 == null)
                                        sb_szTempString_12 = new StringBuilder(32);
                                    else
                                        sb_szTempString_12 = new StringBuilder(szTempString_12);
                                    ZeidonStringConcat(sb_szTempString_12, 1, 0,
                                            "  (All courses for subgroup taken.)", 1, 0, 255);
                                    szTempString_12 = sb_szTempString_12.toString();
                                }
                                SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditOL_Value",
                                        szTempString_12);
                                //:IF szCourseCompletedFlag = "Y"
                                if (ZeidonStringCompare(szCourseCompletedFlag, 1, 0, "Y", 1, 0, 2) == 0) {
                                    //:mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "C"
                                    SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditSatisfied",
                                            "C");
                                    //:ELSE
                                } else {
                                    //:mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "T"
                                    SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditSatisfied",
                                            "T");
                                }

                                //:END
                                //:ELSE
                            } else {
                                //:mDegTrk.RequiredSubGroup.wDegreeAuditOL_Value = mDegTrk.RequiredSubGroup.dReportValue
                                SetAttributeFromAttribute(mDegTrk, "RequiredSubGroup", "wDegreeAuditOL_Value",
                                        mDegTrk, "RequiredSubGroup", "dReportValue");
                                //:mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "N"
                                SetAttributeFromString(mDegTrk, "RequiredSubGroup", "wDegreeAuditSatisfied",
                                        "N");
                            }

                            RESULT = mDegTrk.cursor("RequiredSubGroup").setNextContinue().toInt();
                            ;
                            //:END
                        }

                        //:END
                        //:szCreditsNeeded = mDegTrk.RequiredGroup.TotalRequiredCredits
                        {
                            MutableInt mi_lTempInteger_55 = new MutableInt(lTempInteger_55);
                            StringBuilder sb_szCreditsNeeded;
                            if (szCreditsNeeded == null)
                                sb_szCreditsNeeded = new StringBuilder(32);
                            else
                                sb_szCreditsNeeded = new StringBuilder(szCreditsNeeded);
                            GetVariableFromAttribute(sb_szCreditsNeeded, mi_lTempInteger_55, 'S', 11, mDegTrk,
                                    "RequiredGroup", "TotalRequiredCredits", "", 0);
                            lTempInteger_55 = mi_lTempInteger_55.intValue();
                            szCreditsNeeded = sb_szCreditsNeeded.toString();
                        }
                        //:szCreditsTaken  = CreditsTaken
                        {
                            StringBuilder sb_szCreditsTaken;
                            if (szCreditsTaken == null)
                                sb_szCreditsTaken = new StringBuilder(32);
                            else
                                sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                            ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, CreditsTaken, "D");
                            szCreditsTaken = sb_szCreditsTaken.toString();
                        }
                        //:/*IF mDegTrk.RequiredGroup.wDegreeAuditHasTakingFlag = "Y"
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                        //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed/enrolled.)"
                        //:ELSE
                        //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                        //:            "  (" + szCreditsTaken + " of " + szCreditsNeeded + " credits completed.)"
                        //:END*/
                        //:// One subgroup must have all courses taken for the group to meet requirements.
                        //:// Add to subgroup display value.
                        //:SET CURSOR FIRST mDegTrk.RequiredSubGroup WHERE mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "C"
                        RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("wDegreeAuditSatisfied", "C")
                                .toInt();
                        //:IF RESULT >= zCURSOR_SET
                        if (RESULT >= zCURSOR_SET) {
                            //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                            //:                                     " (All courses in one subgroup must be taken: Reqmt MET)"
                            {
                                StringBuilder sb_szTempString_13;
                                if (szTempString_13 == null)
                                    sb_szTempString_13 = new StringBuilder(32);
                                else
                                    sb_szTempString_13 = new StringBuilder(szTempString_13);
                                GetStringFromAttribute(sb_szTempString_13, mDegTrk, "RequiredGroup",
                                        "dReportValue");
                                szTempString_13 = sb_szTempString_13.toString();
                            }
                            {
                                StringBuilder sb_szTempString_13;
                                if (szTempString_13 == null)
                                    sb_szTempString_13 = new StringBuilder(32);
                                else
                                    sb_szTempString_13 = new StringBuilder(szTempString_13);
                                ZeidonStringConcat(sb_szTempString_13, 1, 0,
                                        " (All courses in one subgroup must be taken: Reqmt MET)", 1, 0, 255);
                                szTempString_13 = sb_szTempString_13.toString();
                            }
                            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                    szTempString_13);
                            //:IF CreditsCompleted >= mDegTrk.RequiredGroup.TotalRequiredCredits
                            if (CompareAttributeToDecimal(mDegTrk, "RequiredGroup", "TotalRequiredCredits",
                                    CreditsCompleted) <= 0) {
                                //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
                                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
                                //:ELSE
                            } else {
                                //:IF CreditsTaken >= mDegTrk.RequiredGroup.TotalRequiredCredits
                                if (CompareAttributeToDecimal(mDegTrk, "RequiredGroup", "TotalRequiredCredits",
                                        CreditsTaken) <= 0) {
                                    //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
                                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied",
                                            "T");
                                    //:ELSE
                                } else {
                                    //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied",
                                            "N");
                                }

                                //:END
                            }

                            //:END
                            //:ELSE
                        } else {
                            //:SET CURSOR FIRST mDegTrk.RequiredSubGroup WHERE mDegTrk.RequiredSubGroup.wDegreeAuditSatisfied = "T"
                            RESULT = mDegTrk.cursor("RequiredSubGroup").setFirst("wDegreeAuditSatisfied", "T")
                                    .toInt();
                            //:IF RESULT >= zCURSOR_SET
                            if (RESULT >= zCURSOR_SET) {
                                //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                                //:                                     " (All courses in one subgroup must be taken: Reqmt MET)"
                                {
                                    StringBuilder sb_szTempString_14;
                                    if (szTempString_14 == null)
                                        sb_szTempString_14 = new StringBuilder(32);
                                    else
                                        sb_szTempString_14 = new StringBuilder(szTempString_14);
                                    GetStringFromAttribute(sb_szTempString_14, mDegTrk, "RequiredGroup",
                                            "dReportValue");
                                    szTempString_14 = sb_szTempString_14.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_14;
                                    if (szTempString_14 == null)
                                        sb_szTempString_14 = new StringBuilder(32);
                                    else
                                        sb_szTempString_14 = new StringBuilder(szTempString_14);
                                    ZeidonStringConcat(sb_szTempString_14, 1, 0,
                                            " (All courses in one subgroup must be taken: Reqmt MET)", 1, 0,
                                            255);
                                    szTempString_14 = sb_szTempString_14.toString();
                                }
                                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                        szTempString_14);
                                //:IF CreditsTaken >= mDegTrk.RequiredGroup.TotalRequiredCredits
                                if (CompareAttributeToDecimal(mDegTrk, "RequiredGroup", "TotalRequiredCredits",
                                        CreditsTaken) <= 0) {
                                    //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
                                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied",
                                            "T");
                                    //:ELSE
                                } else {
                                    //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                                    SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied",
                                            "N");
                                }

                                //:END
                                //:ELSE
                            } else {
                                //:mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N"
                                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "N");
                                //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
                                //:                                     " (NO subgroup meets reqmts)"
                                {
                                    StringBuilder sb_szTempString_15;
                                    if (szTempString_15 == null)
                                        sb_szTempString_15 = new StringBuilder(32);
                                    else
                                        sb_szTempString_15 = new StringBuilder(szTempString_15);
                                    GetStringFromAttribute(sb_szTempString_15, mDegTrk, "RequiredGroup",
                                            "dReportValue");
                                    szTempString_15 = sb_szTempString_15.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_15;
                                    if (szTempString_15 == null)
                                        sb_szTempString_15 = new StringBuilder(32);
                                    else
                                        sb_szTempString_15 = new StringBuilder(szTempString_15);
                                    ZeidonStringConcat(sb_szTempString_15, 1, 0, " (NO subgroup meets reqmts)",
                                            1, 0, 255);
                                    szTempString_15 = sb_szTempString_15.toString();
                                }
                                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                        szTempString_15);
                            }

                            //:END
                        }

                        //:END
                        //:mDegTrk.RequiredGroup.wDegreeAuditTotalCreditsTaken = CreditsTaken
                        SetAttributeFromDecimal(mDegTrk, "RequiredGroup", "wDegreeAuditTotalCreditsTaken",
                                CreditsTaken);
                        //:ELSE
                    } else {

                        //:// Group Type E: Electives

                        //:IF mDegTrk.RequiredGroup.Type = "E"
                        if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "E") == 0) {

                            //:CourseTakenCount  = 0
                            CourseTakenCount = 0;
                            //:CreditsTaken      = 0
                            CreditsTaken = 0;
                            //:FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                            RESULT = mDegTrk.cursor("CourseType1or2").setFirst("RequiredGroup").toInt();
                            while (RESULT > zCURSOR_UNCHANGED) {
                                //:IF mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = "Y"
                                if (CompareAttributeToString(mDegTrk, "CourseType1or2",
                                        "wDegreeAuditCourseTaken", "Y") == 0) {
                                    //:CourseTakenCount = CourseTakenCount + 1
                                    CourseTakenCount = CourseTakenCount + 1;
                                    //:CreditsTaken     = CreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken 
                                    {
                                        MutableDouble md_dTempDecimal_17 = new MutableDouble(dTempDecimal_17);
                                        GetDecimalFromAttribute(md_dTempDecimal_17, mDegTrk, "CourseType1or2",
                                                "wCreditsTaken");
                                        dTempDecimal_17 = md_dTempDecimal_17.doubleValue();
                                    }
                                    CreditsTaken = CreditsTaken + dTempDecimal_17;
                                }

                                //:END
                                //:TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken
                                {
                                    MutableDouble md_dTempDecimal_18 = new MutableDouble(dTempDecimal_18);
                                    GetDecimalFromAttribute(md_dTempDecimal_18, mDegTrk, "CourseType1or2",
                                            "wCreditsTaken");
                                    dTempDecimal_18 = md_dTempDecimal_18.doubleValue();
                                }
                                TotalDegreeTrackCreditsTaken = TotalDegreeTrackCreditsTaken + dTempDecimal_18;
                                //:IF mDegTrk.CourseType1or2.wCourseStatus = "Completed"
                                if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wCourseStatus",
                                        "Completed") == 0) {
                                    //:TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned + mDegTrk.CourseType1or2.wCreditsTaken
                                    {
                                        MutableDouble md_dTempDecimal_19 = new MutableDouble(dTempDecimal_19);
                                        GetDecimalFromAttribute(md_dTempDecimal_19, mDegTrk, "CourseType1or2",
                                                "wCreditsTaken");
                                        dTempDecimal_19 = md_dTempDecimal_19.doubleValue();
                                    }
                                    TotalDegreeTrackCreditsEarned = TotalDegreeTrackCreditsEarned
                                            + dTempDecimal_19;
                                }

                                RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                                ;
                                //:END
                            }

                            //:END
                            //:szCourseTakenCount = CourseTakenCount
                            {
                                StringBuilder sb_szCourseTakenCount;
                                if (szCourseTakenCount == null)
                                    sb_szCourseTakenCount = new StringBuilder(32);
                                else
                                    sb_szCourseTakenCount = new StringBuilder(szCourseTakenCount);
                                ZeidonStringConvertFromNumber(sb_szCourseTakenCount, 1, 0, 5, CourseTakenCount,
                                        (double) 0.0, "I");
                                szCourseTakenCount = sb_szCourseTakenCount.toString();
                            }
                            //:szCreditsTaken     = CreditsTaken
                            {
                                StringBuilder sb_szCreditsTaken;
                                if (szCreditsTaken == null)
                                    sb_szCreditsTaken = new StringBuilder(32);
                                else
                                    sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                                ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, CreditsTaken,
                                        "D");
                                szCreditsTaken = sb_szCreditsTaken.toString();
                            }
                            //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = "Electives - " +
                            //:         "Courses: " + szCourseTakenCount + ", Credits: " + szCreditsTaken
                            {
                                StringBuilder sb_szTempString_16;
                                if (szTempString_16 == null)
                                    sb_szTempString_16 = new StringBuilder(32);
                                else
                                    sb_szTempString_16 = new StringBuilder(szTempString_16);
                                ZeidonStringCopy(sb_szTempString_16, 1, 0, "Electives - ", 1, 0, 255);
                                szTempString_16 = sb_szTempString_16.toString();
                            }
                            {
                                StringBuilder sb_szTempString_16;
                                if (szTempString_16 == null)
                                    sb_szTempString_16 = new StringBuilder(32);
                                else
                                    sb_szTempString_16 = new StringBuilder(szTempString_16);
                                ZeidonStringConcat(sb_szTempString_16, 1, 0, "Courses: ", 1, 0, 255);
                                szTempString_16 = sb_szTempString_16.toString();
                            }
                            {
                                StringBuilder sb_szTempString_16;
                                if (szTempString_16 == null)
                                    sb_szTempString_16 = new StringBuilder(32);
                                else
                                    sb_szTempString_16 = new StringBuilder(szTempString_16);
                                ZeidonStringConcat(sb_szTempString_16, 1, 0, szCourseTakenCount, 1, 0, 255);
                                szTempString_16 = sb_szTempString_16.toString();
                            }
                            {
                                StringBuilder sb_szTempString_16;
                                if (szTempString_16 == null)
                                    sb_szTempString_16 = new StringBuilder(32);
                                else
                                    sb_szTempString_16 = new StringBuilder(szTempString_16);
                                ZeidonStringConcat(sb_szTempString_16, 1, 0, ", Credits: ", 1, 0, 255);
                                szTempString_16 = sb_szTempString_16.toString();
                            }
                            {
                                StringBuilder sb_szTempString_16;
                                if (szTempString_16 == null)
                                    sb_szTempString_16 = new StringBuilder(32);
                                else
                                    sb_szTempString_16 = new StringBuilder(szTempString_16);
                                ZeidonStringConcat(sb_szTempString_16, 1, 0, szCreditsTaken, 1, 0, 255);
                                szTempString_16 = sb_szTempString_16.toString();
                            }
                            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                    szTempString_16);
                            //:mDegTrk.RequiredGroup.wDegreeAuditTotalCreditsTaken = CreditsTaken
                            SetAttributeFromDecimal(mDegTrk, "RequiredGroup", "wDegreeAuditTotalCreditsTaken",
                                    CreditsTaken);
                            //:OrderEntityForView( mDegTrk, "RequiredGroupCourseType1or2", "CourseType1or2.Number A" )
                            OrderEntityForView(mDegTrk, "RequiredGroupCourseType1or2",
                                    "CourseType1or2.Number A");

                            //:ELSE
                        } else {

                            //:// Group Type D: Developmental Courses

                            //:IF mDegTrk.RequiredGroup.Type = "D"
                            if (CompareAttributeToString(mDegTrk, "RequiredGroup", "Type", "D") == 0) {

                                //:CourseTakenCount  = 0
                                CourseTakenCount = 0;
                                //:CreditsTaken      = 0
                                CreditsTaken = 0;
                                //:FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.RequiredGroup
                                RESULT = mDegTrk.cursor("CourseType1or2").setFirst("RequiredGroup").toInt();
                                while (RESULT > zCURSOR_UNCHANGED) {
                                    //:CourseTakenCount = CourseTakenCount + 1
                                    CourseTakenCount = CourseTakenCount + 1;
                                    //:CreditsTaken     = CreditsTaken + mDegTrk.CourseType1or2.wCreditsTaken 
                                    {
                                        MutableDouble md_dTempDecimal_20 = new MutableDouble(dTempDecimal_20);
                                        GetDecimalFromAttribute(md_dTempDecimal_20, mDegTrk, "CourseType1or2",
                                                "wCreditsTaken");
                                        dTempDecimal_20 = md_dTempDecimal_20.doubleValue();
                                    }
                                    CreditsTaken = CreditsTaken + dTempDecimal_20;
                                    RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
                                    ;
                                }

                                //:END
                                //:szCourseTakenCount = CourseTakenCount
                                {
                                    StringBuilder sb_szCourseTakenCount;
                                    if (szCourseTakenCount == null)
                                        sb_szCourseTakenCount = new StringBuilder(32);
                                    else
                                        sb_szCourseTakenCount = new StringBuilder(szCourseTakenCount);
                                    ZeidonStringConvertFromNumber(sb_szCourseTakenCount, 1, 0, 5,
                                            CourseTakenCount, (double) 0.0, "I");
                                    szCourseTakenCount = sb_szCourseTakenCount.toString();
                                }
                                //:szCreditsTaken     = CreditsTaken
                                {
                                    StringBuilder sb_szCreditsTaken;
                                    if (szCreditsTaken == null)
                                        sb_szCreditsTaken = new StringBuilder(32);
                                    else
                                        sb_szCreditsTaken = new StringBuilder(szCreditsTaken);
                                    ZeidonStringConvertFromNumber(sb_szCreditsTaken, 1, 0, 10, 0, CreditsTaken,
                                            "D");
                                    szCreditsTaken = sb_szCreditsTaken.toString();
                                }
                                //:mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.Name +
                                //:      " - Courses: " + szCourseTakenCount + ", Credits: " + szCreditsTaken
                                {
                                    StringBuilder sb_szTempString_17;
                                    if (szTempString_17 == null)
                                        sb_szTempString_17 = new StringBuilder(32);
                                    else
                                        sb_szTempString_17 = new StringBuilder(szTempString_17);
                                    GetStringFromAttribute(sb_szTempString_17, mDegTrk, "RequiredGroup",
                                            "Name");
                                    szTempString_17 = sb_szTempString_17.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_17;
                                    if (szTempString_17 == null)
                                        sb_szTempString_17 = new StringBuilder(32);
                                    else
                                        sb_szTempString_17 = new StringBuilder(szTempString_17);
                                    ZeidonStringConcat(sb_szTempString_17, 1, 0, " - Courses: ", 1, 0, 255);
                                    szTempString_17 = sb_szTempString_17.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_17;
                                    if (szTempString_17 == null)
                                        sb_szTempString_17 = new StringBuilder(32);
                                    else
                                        sb_szTempString_17 = new StringBuilder(szTempString_17);
                                    ZeidonStringConcat(sb_szTempString_17, 1, 0, szCourseTakenCount, 1, 0, 255);
                                    szTempString_17 = sb_szTempString_17.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_17;
                                    if (szTempString_17 == null)
                                        sb_szTempString_17 = new StringBuilder(32);
                                    else
                                        sb_szTempString_17 = new StringBuilder(szTempString_17);
                                    ZeidonStringConcat(sb_szTempString_17, 1, 0, ", Credits: ", 1, 0, 255);
                                    szTempString_17 = sb_szTempString_17.toString();
                                }
                                {
                                    StringBuilder sb_szTempString_17;
                                    if (szTempString_17 == null)
                                        sb_szTempString_17 = new StringBuilder(32);
                                    else
                                        sb_szTempString_17 = new StringBuilder(szTempString_17);
                                    ZeidonStringConcat(sb_szTempString_17, 1, 0, szCreditsTaken, 1, 0, 255);
                                    szTempString_17 = sb_szTempString_17.toString();
                                }
                                SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value",
                                        szTempString_17);
                                //:OrderEntityForView( mDegTrk, "RequiredGroupCourseType1or2", "CourseType1or2.Number A" )
                                OrderEntityForView(mDegTrk, "RequiredGroupCourseType1or2",
                                        "CourseType1or2.Number A");
                            }

                            //:END
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

            //:END
        }

        //: END
        //: 
        //: // If the RequiredGroup has been manually satisfied, we will override the results set above.
        //: // We will first validate that no ManuallySatisfied entry exists without a DegreeTrack entity as this
        //: // case leads to a Core error.
        //: FOR EACH mStudenC.ManuallySatisfied 
        RESULT = mStudenC.cursor("ManuallySatisfied").setFirst().toInt();
        while (RESULT > zCURSOR_UNCHANGED) {
            //: IF mStudenC.MS_DegreeTrack DOES NOT EXIST
            lTempInteger_56 = CheckExistenceOfEntity(mStudenC, "MS_DegreeTrack");
            if (lTempInteger_56 != 0) {
                //: MessageSend( mStudenC, "", "Degree Audit",
                //:              "The Student has a 'Manually Satisfied Groups' entry that doesn't have a Degree Track associated with it.",
                //:              zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 )
                MessageSend(mStudenC, "", "Degree Audit",
                        "The Student has a 'Manually Satisfied Groups' entry that doesn't have a Degree Track associated with it.",
                        zMSGQ_OBJECT_CONSTRAINT_ERROR, 0);
                //: RETURN -1
                if (8 == 8)
                    return (-1);
            }

            //: END
            //: IF mStudenC.MS_RequiredGroup DOES NOT EXIST
            lTempInteger_57 = CheckExistenceOfEntity(mStudenC, "MS_RequiredGroup");
            if (lTempInteger_57 != 0) {
                //: MessageSend( mStudenC, "", "Degree Audit",
                //:              "The Student has a 'Manually Satisfied Groups' entry that doesn't have a Required Group associated with it.",
                //:              zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 )
                MessageSend(mStudenC, "", "Degree Audit",
                        "The Student has a 'Manually Satisfied Groups' entry that doesn't have a Required Group associated with it.",
                        zMSGQ_OBJECT_CONSTRAINT_ERROR, 0);
                //: RETURN -1
                if (8 == 8)
                    return (-1);
            }

            RESULT = mStudenC.cursor("ManuallySatisfied").setNextContinue().toInt();
            ;
            //: END
        }

        //: END
        //: SET CURSOR FIRST mStudenC.ManuallySatisfied 
        //:            WHERE mStudenC.MS_DegreeTrack.ID   = mDegTrk.DegreeTrack.ID 
        //:              AND mStudenC.MS_RequiredGroup.ID = mDegTrk.RequiredGroup.ID 
        RESULT = mStudenC.cursor("ManuallySatisfied").setFirst().toInt();
        if (RESULT > zCURSOR_UNCHANGED) {
            while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToAttribute(mStudenC, "MS_DegreeTrack", "ID",
                    mDegTrk, "DegreeTrack", "ID") != 0
                    || CompareAttributeToAttribute(mStudenC, "MS_RequiredGroup", "ID", mDegTrk, "RequiredGroup",
                            "ID") != 0)) {
                RESULT = mStudenC.cursor("ManuallySatisfied").setNextContinue().toInt();
                ;
            }

        }

        //: IF RESULT >= zCURSOR_SET
        if (RESULT >= zCURSOR_SET) {
            //: mDegTrk.RequiredGroup.wDegreeAuditOL_Value = mDegTrk.RequiredGroup.dReportValue +
            //:                     "  (Manually satisfied: " + mStudenC.ManuallySatisfied.SatisfiedReason + ")"
            {
                StringBuilder sb_szTempString_18;
                if (szTempString_18 == null)
                    sb_szTempString_18 = new StringBuilder(32);
                else
                    sb_szTempString_18 = new StringBuilder(szTempString_18);
                GetStringFromAttribute(sb_szTempString_18, mDegTrk, "RequiredGroup", "dReportValue");
                szTempString_18 = sb_szTempString_18.toString();
            }
            {
                StringBuilder sb_szTempString_18;
                if (szTempString_18 == null)
                    sb_szTempString_18 = new StringBuilder(32);
                else
                    sb_szTempString_18 = new StringBuilder(szTempString_18);
                ZeidonStringConcat(sb_szTempString_18, 1, 0, "  (Manually satisfied: ", 1, 0, 255);
                szTempString_18 = sb_szTempString_18.toString();
            }
            {
                MutableInt mi_lTempInteger_58 = new MutableInt(lTempInteger_58);
                StringBuilder sb_szTempString_19;
                if (szTempString_19 == null)
                    sb_szTempString_19 = new StringBuilder(32);
                else
                    sb_szTempString_19 = new StringBuilder(szTempString_19);
                GetVariableFromAttribute(sb_szTempString_19, mi_lTempInteger_58, 'S', 51, mStudenC,
                        "ManuallySatisfied", "SatisfiedReason", "", 0);
                lTempInteger_58 = mi_lTempInteger_58.intValue();
                szTempString_19 = sb_szTempString_19.toString();
            }
            {
                StringBuilder sb_szTempString_18;
                if (szTempString_18 == null)
                    sb_szTempString_18 = new StringBuilder(32);
                else
                    sb_szTempString_18 = new StringBuilder(szTempString_18);
                ZeidonStringConcat(sb_szTempString_18, 1, 0, szTempString_19, 1, 0, 255);
                szTempString_18 = sb_szTempString_18.toString();
            }
            {
                StringBuilder sb_szTempString_18;
                if (szTempString_18 == null)
                    sb_szTempString_18 = new StringBuilder(32);
                else
                    sb_szTempString_18 = new StringBuilder(szTempString_18);
                ZeidonStringConcat(sb_szTempString_18, 1, 0, ")", 1, 0, 255);
                szTempString_18 = sb_szTempString_18.toString();
            }
            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditOL_Value", szTempString_18);
            //: mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "C"
            SetAttributeFromString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "C");
        }

        RESULT = mDegTrk.cursor("RequiredGroup").setNextContinue().toInt();
        ;
        //: END
    }

    //:END

    //:// Add any Waitlisted courses, though they won't apply to any credit counts or audit results.
    //:// We also won't consider any repeatable classes that have already been taken.
    //:FOR EACH mStudenC.StudentWaitlisted 
    RESULT = mStudenC.cursor("StudentWaitlisted").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:SET CURSOR FIRST mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack
        //:           WHERE mDegTrk.CourseType1or2.ID = mStudenC.StudentWaitlistedCourse.ID 
        {
            MutableInt mi_lTempInteger_59 = new MutableInt(lTempInteger_59);
            GetIntegerFromAttribute(mi_lTempInteger_59, mStudenC, "StudentWaitlistedCourse", "ID");
            lTempInteger_59 = mi_lTempInteger_59.intValue();
        }
        RESULT = mDegTrk.cursor("CourseType1or2").setFirst("ID", lTempInteger_59, "DegreeTrack").toInt();
        //:IF RESULT >= zCURSOR_SET
        if (RESULT >= zCURSOR_SET) {
            //:// There was a match on CourseType1or2. 
            //:// If the entry has already been satisfied, add a new item.
            //:IF mDegTrk.CourseType1or2.wDegreeAuditCourseTaken = ""
            if (CompareAttributeToString(mDegTrk, "CourseType1or2", "wDegreeAuditCourseTaken", "") == 0) {
                //:mDegTrk.CourseType1or2.wCourseStatus = "Waitlisted"
                SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "Waitlisted");
                //:mDegTrk.CourseType1or2.wCreditsTaken = mStudenC.StudentWaitlistedClass.CreditHours
                SetAttributeFromAttribute(mDegTrk, "CourseType1or2", "wCreditsTaken", mStudenC,
                        "StudentWaitlistedClass", "CreditHours");
                //:ELSE
            } else {
                //:CreateViewFromView( mDegTrkC, mDegTrk )
                CreateViewFromView(mDegTrkC, mDegTrk);
                //:CREATE ENTITY mDegTrkC.RequiredGroupCourseType1or2 
                RESULT = CreateEntity(mDegTrkC, "RequiredGroupCourseType1or2", zPOS_AFTER);
                //:CREATE ENTITY mDegTrkC.CourseType1or2 
                RESULT = CreateEntity(mDegTrkC, "CourseType1or2", zPOS_AFTER);
                //:SetMatchingAttributesByName( mDegTrkC, "CourseType1or2", mDegTrk, "CourseType1or2", zSET_NULL )
                SetMatchingAttributesByName(mDegTrkC, "CourseType1or2", mDegTrk, "CourseType1or2", zSET_NULL);
                //:IF mStudenC.StudentWaitlistedCourseTopic EXISTS
                lTempInteger_60 = CheckExistenceOfEntity(mStudenC, "StudentWaitlistedCourseTopic");
                if (lTempInteger_60 == 0) {
                    //:mDegTrkC.CourseType1or2.Number = mStudenC.StudentWaitlistedCourse.Number + 
                    //:                                 mStudenC.StudentWaitlistedCourseTopic.Number 
                    {
                        StringBuilder sb_szTempString_20;
                        if (szTempString_20 == null)
                            sb_szTempString_20 = new StringBuilder(32);
                        else
                            sb_szTempString_20 = new StringBuilder(szTempString_20);
                        GetStringFromAttribute(sb_szTempString_20, mStudenC, "StudentWaitlistedCourse",
                                "Number");
                        szTempString_20 = sb_szTempString_20.toString();
                    }
                    {
                        StringBuilder sb_szTempString_21;
                        if (szTempString_21 == null)
                            sb_szTempString_21 = new StringBuilder(32);
                        else
                            sb_szTempString_21 = new StringBuilder(szTempString_21);
                        GetStringFromAttribute(sb_szTempString_21, mStudenC, "StudentWaitlistedCourseTopic",
                                "Number");
                        szTempString_21 = sb_szTempString_21.toString();
                    }
                    {
                        StringBuilder sb_szTempString_20;
                        if (szTempString_20 == null)
                            sb_szTempString_20 = new StringBuilder(32);
                        else
                            sb_szTempString_20 = new StringBuilder(szTempString_20);
                        ZeidonStringConcat(sb_szTempString_20, 1, 0, szTempString_21, 1, 0, 11);
                        szTempString_20 = sb_szTempString_20.toString();
                    }
                    SetAttributeFromString(mDegTrkC, "CourseType1or2", "Number", szTempString_20);
                    //:mDegTrkC.CourseType1or2.Title  = mStudenC.StudentWaitlistedCourseTopic.Title
                    SetAttributeFromAttribute(mDegTrkC, "CourseType1or2", "Title", mStudenC,
                            "StudentWaitlistedCourseTopic", "Title");
                    //:ELSE
                } else {
                    //:mDegTrkC.CourseType1or2.Number = mStudenC.StudentWaitlistedCourse.Number 
                    SetAttributeFromAttribute(mDegTrkC, "CourseType1or2", "Number", mStudenC,
                            "StudentWaitlistedCourse", "Number");
                    //:mDegTrkC.CourseType1or2.Title  = mStudenC.StudentWaitlistedCourse.Title
                    SetAttributeFromAttribute(mDegTrkC, "CourseType1or2", "Title", mStudenC,
                            "StudentWaitlistedCourse", "Title");
                }

                //:END
                //:mDegTrkC.CourseType1or2.wCourseStatus = "Waitlisted"
                SetAttributeFromString(mDegTrkC, "CourseType1or2", "wCourseStatus", "Waitlisted");
                //:mDegTrkC.CourseType1or2.wCreditsTaken = mStudenC.StudentWaitlistedClass.CreditHours
                SetAttributeFromAttribute(mDegTrkC, "CourseType1or2", "wCreditsTaken", mStudenC,
                        "StudentWaitlistedClass", "CreditHours");
                //:DropView( mDegTrkC )
                DropView(mDegTrkC);
            }

            //:END
            //:ELSE
        } else {
            //:// There wasn't a match on CourseType1or2, so try CourseType3or4.
            //:SET CURSOR FIRST mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack
            //:           WHERE mDegTrk.CourseType3or4.ID = mStudenC.StudentWaitlistedCourse.ID 
            {
                MutableInt mi_lTempInteger_61 = new MutableInt(lTempInteger_61);
                GetIntegerFromAttribute(mi_lTempInteger_61, mStudenC, "StudentWaitlistedCourse", "ID");
                lTempInteger_61 = mi_lTempInteger_61.intValue();
            }
            RESULT = mDegTrk.cursor("CourseType3or4").setFirst("ID", lTempInteger_61, "DegreeTrack").toInt();
            //:IF RESULT >= zCURSOR_SET
            if (RESULT >= zCURSOR_SET) {
                //:// There was a match on CourseType3or4.
                //:// If the entry has already been satisfied, add a new item.
                //:IF mDegTrk.CourseType3or4.wDegreeAuditCourseTaken = ""
                if (CompareAttributeToString(mDegTrk, "CourseType3or4", "wDegreeAuditCourseTaken", "") == 0) {
                    //:mDegTrk.CourseType3or4.wCourseStatus = "Waitlisted"
                    SetAttributeFromString(mDegTrk, "CourseType3or4", "wCourseStatus", "Waitlisted");
                    //:mDegTrk.CourseType3or4.wCreditsTaken = mStudenC.StudentWaitlistedClass.CreditHours
                    SetAttributeFromAttribute(mDegTrk, "CourseType3or4", "wCreditsTaken", mStudenC,
                            "StudentWaitlistedClass", "CreditHours");
                    //:ELSE
                } else {
                    //:CreateViewFromView( mDegTrkC, mDegTrk )
                    CreateViewFromView(mDegTrkC, mDegTrk);
                    //:CREATE ENTITY mDegTrkC.RequiredGroupCourseType3or4 
                    RESULT = CreateEntity(mDegTrkC, "RequiredGroupCourseType3or4", zPOS_AFTER);
                    //:CREATE ENTITY mDegTrkC.CourseType3or4 
                    RESULT = CreateEntity(mDegTrkC, "CourseType3or4", zPOS_AFTER);
                    //:SetMatchingAttributesByName( mDegTrkC, "CourseType3or4", mDegTrk, "CourseType3or4", zSET_NULL )
                    SetMatchingAttributesByName(mDegTrkC, "CourseType3or4", mDegTrk, "CourseType3or4",
                            zSET_NULL);
                    //:IF mStudenC.StudentWaitlistedCourseTopic EXISTS
                    lTempInteger_62 = CheckExistenceOfEntity(mStudenC, "StudentWaitlistedCourseTopic");
                    if (lTempInteger_62 == 0) {
                        //:mDegTrkC.CourseType3or4.Number = mStudenC.StudentWaitlistedCourse.Number + 
                        //:                                 mStudenC.StudentWaitlistedCourseTopic.Number 
                        {
                            StringBuilder sb_szTempString_22;
                            if (szTempString_22 == null)
                                sb_szTempString_22 = new StringBuilder(32);
                            else
                                sb_szTempString_22 = new StringBuilder(szTempString_22);
                            GetStringFromAttribute(sb_szTempString_22, mStudenC, "StudentWaitlistedCourse",
                                    "Number");
                            szTempString_22 = sb_szTempString_22.toString();
                        }
                        {
                            StringBuilder sb_szTempString_23;
                            if (szTempString_23 == null)
                                sb_szTempString_23 = new StringBuilder(32);
                            else
                                sb_szTempString_23 = new StringBuilder(szTempString_23);
                            GetStringFromAttribute(sb_szTempString_23, mStudenC, "StudentWaitlistedCourseTopic",
                                    "Number");
                            szTempString_23 = sb_szTempString_23.toString();
                        }
                        {
                            StringBuilder sb_szTempString_22;
                            if (szTempString_22 == null)
                                sb_szTempString_22 = new StringBuilder(32);
                            else
                                sb_szTempString_22 = new StringBuilder(szTempString_22);
                            ZeidonStringConcat(sb_szTempString_22, 1, 0, szTempString_23, 1, 0, 11);
                            szTempString_22 = sb_szTempString_22.toString();
                        }
                        SetAttributeFromString(mDegTrkC, "CourseType3or4", "Number", szTempString_22);
                        //:mDegTrkC.CourseType3or4.Title  = mStudenC.StudentWaitlistedCourseTopic.Title
                        SetAttributeFromAttribute(mDegTrkC, "CourseType3or4", "Title", mStudenC,
                                "StudentWaitlistedCourseTopic", "Title");
                        //:ELSE
                    } else {
                        //:mDegTrkC.CourseType3or4.Number = mStudenC.StudentWaitlistedCourse.Number 
                        SetAttributeFromAttribute(mDegTrkC, "CourseType3or4", "Number", mStudenC,
                                "StudentWaitlistedCourse", "Number");
                        //:mDegTrkC.CourseType3or4.Title  = mStudenC.StudentWaitlistedCourse.Title
                        SetAttributeFromAttribute(mDegTrkC, "CourseType3or4", "Title", mStudenC,
                                "StudentWaitlistedCourse", "Title");
                    }

                    //:END
                    //:mDegTrkC.CourseType3or4.wCourseStatus = "Waitlisted"
                    SetAttributeFromString(mDegTrkC, "CourseType3or4", "wCourseStatus", "Waitlisted");
                    //:mDegTrkC.CourseType3or4.wCreditsTaken = mStudenC.StudentWaitlistedClass.CreditHours
                    SetAttributeFromAttribute(mDegTrkC, "CourseType3or4", "wCreditsTaken", mStudenC,
                            "StudentWaitlistedClass", "CreditHours");
                    //:DropView( mDegTrkC )
                    DropView(mDegTrkC);
                }

                //:END
            }

            //:END
        }

        RESULT = mStudenC.cursor("StudentWaitlisted").setNextContinue().toInt();
        ;
        //:END
    }

    //:END

    //:// Mark Course entries "No longer offered" if are no longer Active, unless they are satisfied 
    //:// by a Course.
    //:FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack 
    RESULT = mDegTrk.cursor("CourseType1or2").setFirst("DegreeTrack").toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:IF mDegTrk.CourseType1or2.Status != "" AND
        //:   mDegTrk.CourseType1or2.Status != "A" AND
        //:   mDegTrk.CourseType1or2.wCourseStatus = ""
        if (CompareAttributeToString(mDegTrk, "CourseType1or2", "Status", "") != 0
                && CompareAttributeToString(mDegTrk, "CourseType1or2", "Status", "A") != 0
                && CompareAttributeToString(mDegTrk, "CourseType1or2", "wCourseStatus", "") == 0) {

            //:mDegTrk.CourseType1or2.wCourseStatus = "No longer offered"
            SetAttributeFromString(mDegTrk, "CourseType1or2", "wCourseStatus", "No longer offered");
        }

        RESULT = mDegTrk.cursor("CourseType1or2").setNextContinue().toInt();
        ;
        //:END 
    }

    //:END
    //:FOR EACH mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack 
    RESULT = mDegTrk.cursor("CourseType3or4").setFirst("DegreeTrack").toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:IF mDegTrk.CourseType3or4.Status != "" AND
        //:   mDegTrk.CourseType3or4.Status != "A" AND
        //:   mDegTrk.CourseType3or4.wCourseStatus = ""
        if (CompareAttributeToString(mDegTrk, "CourseType3or4", "Status", "") != 0
                && CompareAttributeToString(mDegTrk, "CourseType3or4", "Status", "A") != 0
                && CompareAttributeToString(mDegTrk, "CourseType3or4", "wCourseStatus", "") == 0) {

            //:mDegTrk.CourseType3or4.wCourseStatus = "No longer offered"
            SetAttributeFromString(mDegTrk, "CourseType3or4", "wCourseStatus", "No longer offered");
        }

        RESULT = mDegTrk.cursor("CourseType3or4").setNextContinue().toInt();
        ;
        //:END 
    }

    //:END

    //:// Drop any entries for Generic Courses that have not been satisfied.
    //:/*FOR EACH mDegTrk.CourseType1or2 WITHIN mDegTrk.DegreeTrack 
    //:   IF mDegTrk.CourseType1or2.GenericCourseFlag = "Y" AND
    //:      mDegTrk.CourseType1or2.wCourseStatus = ""
    //:      
    //:      DropEntity( mDegTrk, "RequiredGroupCourseType1or2", zREPOS_NONE )
    //:   END 
    //:END
    //:FOR EACH mDegTrk.CourseType3or4 WITHIN mDegTrk.DegreeTrack 
    //:   IF mDegTrk.CourseType3or4.GenericCourseFlag = "Y" AND
    //:      mDegTrk.CourseType3or4.wCourseStatus = ""
    //:      
    //:      DropEntity( mDegTrk, "RequiredGroupCourseType3or4", zREPOS_NONE )
    //:   END 
    //:END*/

    //:// Delete the general "Developmental" group if it has no entries.
    //:SET CURSOR FIRST mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack 
    //:           WHERE mDegTrk.RequiredGroup.Type = "D" 
    RESULT = mDegTrk.cursor("RequiredGroup").setFirst("Type", "D", "DegreeTrack").toInt();
    //:IF mDegTrk.RequiredGroupCourseType1or2 DOES NOT EXIST
    lTempInteger_63 = CheckExistenceOfEntity(mDegTrk, "RequiredGroupCourseType1or2");
    if (lTempInteger_63 != 0) {
        //:DELETE ENTITY mDegTrk.DegreeTrackRequiredGroup   
        RESULT = DeleteEntity(mDegTrk, "DegreeTrackRequiredGroup", zPOS_NEXT);
    }

    //:END

    //:// Set total credits applicable to Degree Track.
    //:mDegTrk.DegreeTrack.wDegreeAuditTotalCreditsTaken = TotalDegreeTrackCreditsTaken
    SetAttributeFromDecimal(mDegTrk, "DegreeTrack", "wDegreeAuditTotalCreditsTaken",
            TotalDegreeTrackCreditsTaken);
    //:mDegTrk.DegreeTrack.wDegreeAuditTotalCreditsEarned = TotalDegreeTrackCreditsEarned
    SetAttributeFromDecimal(mDegTrk, "DegreeTrack", "wDegreeAuditTotalCreditsEarned",
            TotalDegreeTrackCreditsEarned);

    //:// Set indication whether or not all audit requirements are met. The indication depends on a combination of whether or
    //:// not Class Requirements are met and the value of the Comprehensive Test Score.
    //:// There are three different possibilities for whether Class Requirements are met.
    //:// 1. Classes Satisfied (CS)
    //://    - All RequiredGroup requirements are met by courses completed.
    //://    - The EarnedCredits - DevelopmentCredits are >= MinimumCredits required, as specified by Degree and graduating year.
    //://    - The Student's GPA is >= MinimumGPA, as specified on the Degree Track.
    //:// 2. Classes On Track (CT)
    //://    - All RequiredGroup requirements are met by courses completed and enrolled (not considering Pre_Transfer courses).
    //://    - The EarnedCredits + EnrolledCredits - DevelopmentCredits (Graduation Credits) are >= MinimumCredits required, 
    //://      as specified by Degree and graduating year.
    //://    - The Student's GPA is >= MinimumGPA, as specified on the Degree Track.
    //:// 3. Classes Not Satisfied (CN)
    //://    - If neither of the above is true.

    //:// The final indication value depends one of the above cases and on the value of the Comprehensive Test Score as follows:
    //:// 1. Requirements Satisfied
    //://    - Courses are Satisfied.
    //://    - The ComprehensiveTestScore value is L, H, D, P, N or R.
    //:// 2. Courses Satisfied, No Comp Results
    //://    - Courses are Satisfied.
    //://    - The ComprehensiveTestScore value is null.
    //:// 3. Courses Satisfied, Failed Comp
    //://    - Courses are Satisfied.
    //://    - The ComprehensiveTestScore value is F.
    //:// 4. Courses on Track, Passed Comp
    //://    - Courses on Track
    //://    - The ComprehensiveTestScore value is L, H, D, P, N or R.
    //:// 5. Courses on Track, No Comp Results
    //://    - Courses on Track
    //://    - The ComprehensiveTestScore value is null.
    //:// 6. Courses on Track, Failed Comp
    //://    - Courses on Track
    //://    - The ComprehensiveTestScore value is F.
    //:// 7. Requirements NOT satisfied
    //://    - If none of the above is true.

    //:// Minimum Credits Required
    //:GET VIEW mDegreeLST NAMED "mDegreeLST"
    RESULT = GetViewByName(mDegreeLST, "mDegreeLST", mDegTrk, zLEVEL_TASK);
    //:IF RESULT < 0
    if (RESULT < 0) {
        //:ACTIVATE mDegreeLST Multiple
        RESULT = ActivateObjectInstance(mDegreeLST, "mDegree", mDegTrk, 0, zMULTIPLE);
        //:NAME VIEW mDegreeLST "mDegreeLST" 
        SetNameForView(mDegreeLST, "mDegreeLST", null, zLEVEL_TASK);
    }

    //:END
    //:IF mStudent.DC_AnticipatedGraduationDate DOES NOT EXIST
    lTempInteger_64 = CheckExistenceOfEntity(mStudent, "DC_AnticipatedGraduationDate");
    if (lTempInteger_64 != 0) {
        //:MinCreditsRequired = 124
        MinCreditsRequired = 124;
        //:ELSE
    } else {
        //:szWorkDate = mStudent.DC_AnticipatedGraduationDate.Date 
        {
            MutableInt mi_lTempInteger_65 = new MutableInt(lTempInteger_65);
            StringBuilder sb_szWorkDate;
            if (szWorkDate == null)
                sb_szWorkDate = new StringBuilder(32);
            else
                sb_szWorkDate = new StringBuilder(szWorkDate);
            GetVariableFromAttribute(sb_szWorkDate, mi_lTempInteger_65, 'S', 9, mStudent,
                    "DC_AnticipatedGraduationDate", "Date", "", 0);
            lTempInteger_65 = mi_lTempInteger_65.intValue();
            szWorkDate = sb_szWorkDate.toString();
        }
        //:szWorkYear = szWorkDate
        {
            StringBuilder sb_szWorkYear;
            if (szWorkYear == null)
                sb_szWorkYear = new StringBuilder(32);
            else
                sb_szWorkYear = new StringBuilder(szWorkYear);
            ZeidonStringCopy(sb_szWorkYear, 1, 0, szWorkDate, 1, 0, 5);
            szWorkYear = sb_szWorkYear.toString();
        }
        //:SET CURSOR FIRST mDegreeLST.CollegeDegree WHERE mDegreeLST.CollegeDegree.ID = mStudent.DegreeTrackCollegeDegree.ID 
        {
            MutableInt mi_lTempInteger_66 = new MutableInt(lTempInteger_66);
            GetIntegerFromAttribute(mi_lTempInteger_66, mStudent, "DegreeTrackCollegeDegree", "ID");
            lTempInteger_66 = mi_lTempInteger_66.intValue();
        }
        RESULT = mDegreeLST.cursor("CollegeDegree").setFirst("ID", lTempInteger_66).toInt();
        //:SET CURSOR FIRST mDegreeLST.DegreeYearData 
        //:           WHERE mDegreeLST.DegreeYearData.FromYear    <= szWorkYear 
        //:             AND mDegreeLST.DegreeYearData.ThroughYear >= szWorkYear 
        RESULT = mDegreeLST.cursor("DegreeYearData").setFirst().toInt();
        if (RESULT > zCURSOR_UNCHANGED) {
            while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToString(mDegreeLST, "DegreeYearData",
                    "FromYear", szWorkYear) > 0
                    || CompareAttributeToString(mDegreeLST, "DegreeYearData", "ThroughYear", szWorkYear) < 0)) {
                RESULT = mDegreeLST.cursor("DegreeYearData").setNextContinue().toInt();
                ;
            }

        }

        //:IF RESULT < zCURSOR_SET
        if (RESULT < zCURSOR_SET) {
            //:MinCreditsRequired = 124
            MinCreditsRequired = 124;
            //:ELSE
        } else {
            //:MinCreditsRequired = mDegreeLST.DegreeYearData.MinimumCreditsRequired 
            {
                MutableDouble md_MinCreditsRequired = new MutableDouble(MinCreditsRequired);
                GetDecimalFromAttribute(md_MinCreditsRequired, mDegreeLST, "DegreeYearData",
                        "MinimumCreditsRequired");
                MinCreditsRequired = md_MinCreditsRequired.doubleValue();
            }
        }

        //:END 
    }

    //:END
    //:mDegTrk.DegreeTrack.wMinimumCreditsRequired = MinCreditsRequired
    SetAttributeFromDecimal(mDegTrk, "DegreeTrack", "wMinimumCreditsRequired", MinCreditsRequired);

    //:// Set summary attributes in DegreeTrack.
    //:mDegTrk.DegreeTrack.AuditTotalCreditsEarned       = lTrnscpt.Student.dEarnedCredits 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditTotalCreditsEarned", lTrnscpt, "Student",
            "dEarnedCredits");
    //:mDegTrk.DegreeTrack.AuditDevelopmentalCredits     = mDegTrk.DegreeTrack.dDevelopmentalCredits 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditDevelopmentalCredits", mDegTrk, "DegreeTrack",
            "dDevelopmentalCredits");
    //:mDegTrk.DegreeTrack.AuditEnrolledCredits          = mStudenC.Student.dEnrolledCredits 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditEnrolledCredits", mStudenC, "Student",
            "dEnrolledCredits");
    //:mDegTrk.DegreeTrack.AuditGraduationCredits        = mDegTrk.DegreeTrack.dGraduationCredits
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditGraduationCredits", mDegTrk, "DegreeTrack",
            "dGraduationCredits");
    //:mDegTrk.DegreeTrack.AuditEnrolledCreditsRepeating = mStudenC.Student.dEnrolledCreditsRepeated 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditEnrolledCreditsRepeating", mStudenC, "Student",
            "dEnrolledCreditsRepeated");
    //:mDegTrk.DegreeTrack.AuditPreTransferCredits       = mStudenC.Student.dPreTransferCredits 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditPreTransferCredits", mStudenC, "Student",
            "dPreTransferCredits");
    //:mDegTrk.DegreeTrack.AuditMinimumCreditsRequired   = mDegTrk.DegreeTrack.wMinimumCreditsRequired 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditMinimumCreditsRequired", mDegTrk, "DegreeTrack",
            "wMinimumCreditsRequired");
    //:mDegTrk.DegreeTrack.AuditGPA                      = lTrnscpt.Student.dGradePointAverage 
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditGPA", lTrnscpt, "Student", "dGradePointAverage");
    //:mDegTrk.DegreeTrack.AuditMajorGPA                 = mStudent.StudentMajorDegreeTrack.dMajorGPA
    SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditMajorGPA", mStudent, "StudentMajorDegreeTrack",
            "dMajorGPA");

    //:GraduationCreditsEarned = lTrnscpt.Student.dEarnedCredits - mDegTrk.DegreeTrack.AuditDevelopmentalCredits
    {
        MutableDouble md_dTempDecimal_21 = new MutableDouble(dTempDecimal_21);
        GetDecimalFromAttribute(md_dTempDecimal_21, lTrnscpt, "Student", "dEarnedCredits");
        dTempDecimal_21 = md_dTempDecimal_21.doubleValue();
    }
    {
        MutableDouble md_dTempDecimal_22 = new MutableDouble(dTempDecimal_22);
        GetDecimalFromAttribute(md_dTempDecimal_22, mDegTrk, "DegreeTrack", "AuditDevelopmentalCredits");
        dTempDecimal_22 = md_dTempDecimal_22.doubleValue();
    }
    GraduationCreditsEarned = dTempDecimal_21 - dTempDecimal_22;

    //:// Compute Local Institution GPA, which will be the AuiditGPA from a copy of the Transcript without
    //:// transfer entries. Thus, if there are not transfer entries, it will be the normal AuditGPA.
    //:SET CURSOR FIRST lTrnscpt.Registration WHERE lTrnscpt.Registration.Status = "F" OR lTrnscpt.Registration.Status = "X"
    RESULT = lTrnscpt.cursor("Registration").setFirst().toInt();
    if (RESULT > zCURSOR_UNCHANGED) {
        while (RESULT > zCURSOR_UNCHANGED
                && (CompareAttributeToString(lTrnscpt, "Registration", "Status", "F") != 0
                        && CompareAttributeToString(lTrnscpt, "Registration", "Status", "X") != 0)) {
            RESULT = lTrnscpt.cursor("Registration").setNextContinue().toInt();
            ;
        }

    }

    //:IF RESULT >= zCURSOR_SET
    if (RESULT >= zCURSOR_SET) {
        //:// There are transfer records, so create a copy of the transcript and eliminate transfer records.
        //:ActivateOI_FromOI( lTrnscptT, lTrnscpt, zSINGLE )
        ActivateOI_FromOI(lTrnscptT, lTrnscpt, zSINGLE);
        //:FOR EACH lTrnscptT.PrintGroup 
        RESULT = lTrnscptT.cursor("PrintGroup").setFirst().toInt();
        while (RESULT > zCURSOR_UNCHANGED) {
            //:DropEntity( lTrnscptT, "PrintGroup", zREPOS_NONE )
            DropEntity(lTrnscptT, "PrintGroup", zREPOS_NONE);
            RESULT = lTrnscptT.cursor("PrintGroup").setNextContinue().toInt();
            ;
        }

        //:END
        //:FOR EACH lTrnscptT.TranscriptGroup 
        RESULT = lTrnscptT.cursor("TranscriptGroup").setFirst().toInt();
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF lTrnscptT.TranscriptGroup.wRecordType = "T"
            if (CompareAttributeToString(lTrnscptT, "TranscriptGroup", "wRecordType", "T") == 0) {
                //:DropEntity( lTrnscptT, "TranscriptGroup", zREPOS_NONE )
                DropEntity(lTrnscptT, "TranscriptGroup", zREPOS_NONE);
            }

            RESULT = lTrnscptT.cursor("TranscriptGroup").setNextContinue().toInt();
            ;
            //:END
        }

        //:END
        //:BuildPrintGroup( lTrnscptT )
        {
            lTrnscpt_Object m_lTrnscpt_Object = new lTrnscpt_Object(lTrnscptT);
            m_lTrnscpt_Object.olTrnscpt_BuildPrintGroup(lTrnscptT);
            // m_lTrnscpt_Object = null;  // permit gc  (unnecessary)
        }
        //:mDegTrk.DegreeTrack.AuditLocalCollegeGPA = lTrnscptT.Student.dGradePointAverage
        SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditLocalCollegeGPA", lTrnscptT, "Student",
                "dGradePointAverage");
        //:DropObjectInstance( lTrnscptT )
        DropObjectInstance(lTrnscptT);
        //:ELSE
    } else {
        //:// There are not transfer records, so use AuditGPA.
        //:mDegTrk.DegreeTrack.AuditLocalCollegeGPA = mDegTrk.DegreeTrack.AuditGPA 
        SetAttributeFromAttribute(mDegTrk, "DegreeTrack", "AuditLocalCollegeGPA", mDegTrk, "DegreeTrack",
                "AuditGPA");
    }

    //:END

    //:// Minimum GPA
    //:IF mDegTrk.DegreeTrack.MinimumGPA = ""
    if (CompareAttributeToString(mDegTrk, "DegreeTrack", "MinimumGPA", "") == 0) {
        //:MessageSend( mDegTrk, "", "Degree Audit", 
        //:             "Minimum GPA is not set for the Degree Track. '2.0' will be used.",
        //:             zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 )
        MessageSend(mDegTrk, "", "Degree Audit",
                "Minimum GPA is not set for the Degree Track. '2.0' will be used.",
                zMSGQ_OBJECT_CONSTRAINT_WARNING, 0);
        //:MinimumGPA = 2.0
        MinimumGPA = 2.0;
        //:ELSE
    } else {
        //:MinimumGPA = mDegTrk.DegreeTrack.MinimumGPA
        {
            MutableDouble md_MinimumGPA = new MutableDouble(MinimumGPA);
            GetDecimalFromAttribute(md_MinimumGPA, mDegTrk, "DegreeTrack", "MinimumGPA");
            MinimumGPA = md_MinimumGPA.doubleValue();
        }
    }

    //:END

    //:SET CURSOR FIRST mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack 
    //:           WHERE mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N" OR
    //:                 mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "T"
    RESULT = mDegTrk.cursor("RequiredGroup").setFirst("DegreeTrack").toInt();
    if (RESULT > zCURSOR_UNCHANGED) {
        while (RESULT > zCURSOR_UNCHANGED && (CompareAttributeToString(mDegTrk, "RequiredGroup",
                "wDegreeAuditSatisfied", "N") != 0
                && CompareAttributeToString(mDegTrk, "RequiredGroup", "wDegreeAuditSatisfied", "T") != 0)) {
            RESULT = mDegTrk.cursor("RequiredGroup").setNextContinue().toInt();
            ;
        }

    }

    //:IF RESULT < zCURSOR_SET AND    // All group requirements are met as Completed
    //:   GraduationCreditsEarned >= MinCreditsRequired AND 
    //:   lTrnscpt.Student.dGradePointAverage >= MinimumGPA
    if (RESULT < zCURSOR_SET && GraduationCreditsEarned >= MinCreditsRequired
            && CompareAttributeToDecimal(lTrnscpt, "Student", "dGradePointAverage", MinimumGPA) >= 0) {

        //:mDegTrk.DegreeTrack.wDegreeAuditSatisfiedDescription = "Courses SATISFIED"
        SetAttributeFromString(mDegTrk, "DegreeTrack", "wDegreeAuditSatisfiedDescription", "Courses SATISFIED");
        //:ELSE
    } else {
        //:SET CURSOR FIRST mDegTrk.RequiredGroup WITHIN mDegTrk.DegreeTrack 
        //:           WHERE mDegTrk.RequiredGroup.wDegreeAuditSatisfied = "N" 
        RESULT = mDegTrk.cursor("RequiredGroup").setFirst("wDegreeAuditSatisfied", "N", "DegreeTrack").toInt();
        //:IF RESULT < zCURSOR_SET AND    // All group requirements are met as Taken or Completed
        //:   mDegTrk.DegreeTrack.AuditGraduationCredits >= MinCreditsRequired AND 
        //:   lTrnscpt.Student.dGradePointAverage >= MinimumGPA
        if (RESULT < zCURSOR_SET
                && CompareAttributeToDecimal(mDegTrk, "DegreeTrack", "AuditGraduationCredits",
                        MinCreditsRequired) >= 0
                && CompareAttributeToDecimal(lTrnscpt, "Student", "dGradePointAverage", MinimumGPA) >= 0) {

            //:mDegTrk.DegreeTrack.wDegreeAuditSatisfiedDescription = "Courses on Track"
            SetAttributeFromString(mDegTrk, "DegreeTrack", "wDegreeAuditSatisfiedDescription",
                    "Courses on Track");
            //:ELSE
        } else {
            //:mDegTrk.DegreeTrack.wDegreeAuditSatisfiedDescription = "Courses NOT satisfied"
            SetAttributeFromString(mDegTrk, "DegreeTrack", "wDegreeAuditSatisfiedDescription",
                    "Courses NOT satisfied");
        }

        //:END
    }

    //:END

    //:// Make sure the RequiredGroup entries are sequenced.
    //:Count = 0
    Count = 0;
    //:FOR EACH mDegTrk.DegreeTrackRequiredGroup 
    RESULT = mDegTrk.cursor("DegreeTrackRequiredGroup").setFirst().toInt();
    while (RESULT > zCURSOR_UNCHANGED) {
        //:Count = Count + 1
        Count = Count + 1;
        //:mDegTrk.DegreeTrackRequiredGroup.SequenceNumber = Count 
        SetAttributeFromInteger(mDegTrk, "DegreeTrackRequiredGroup", "SequenceNumber", Count);
        RESULT = mDegTrk.cursor("DegreeTrackRequiredGroup").setNextContinue().toInt();
        ;
    }

    //:END

    //:SET CURSOR FIRST mDegTrk.DegreeTrack
    RESULT = mDegTrk.cursor("DegreeTrack").setFirst().toInt();
    //:SetSelectStateOfEntity( mDegTrk, "DegreeTrack", 1 )
    SetSelectStateOfEntity(mDegTrk, "DegreeTrack", 1);
    //:mDegTrk.DegreeTrack.wShowHideToggleStatus = "A"
    SetAttributeFromString(mDegTrk, "DegreeTrack", "wShowHideToggleStatus", "A");

    //:// Set up the copy object for showing and contracting entries.
    //:ActivateOI_FromOI( mDegTrkC, mDegTrk, zSINGLE )
    ActivateOI_FromOI(mDegTrkC, mDegTrk, zSINGLE);
    //:NAME VIEW mDegTrkC "mDegTrkCopy"
    SetNameForView(mDegTrkC, "mDegTrkCopy", null, zLEVEL_TASK);

    //:DropObjectInstance( mStudenC )
    DropObjectInstance(mStudenC);
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dTermCreditsNoCashD(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dAmount 
    double dAmount = 0.0;
    int RESULT = 0;
    double dTempDecimal_0 = 0.0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);

        //:dAmount = 0
        dAmount = 0;/*from  w  w  w  .ja  va2 s. com*/
        //:// Sum PeriodTransApplied where they credits, not charges.
        //:// Do not include the cash discount transaction.
        //:FOR EACH mSAProf2.PeriodTransApplied WHERE mSAProf2.PeriodSATransactionCode.Type = "R" 
        RESULT = SetCursorFirstEntity(mSAProf2, "PeriodTransApplied", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            if (CompareAttributeToString(mSAProf2, "PeriodSATransactionCode", "Type", "R") == 0) {
                //:IF mSAProf2.PeriodSATransactionCode.TransactionCode != "CASHDISC" 
                if (CompareAttributeToString(mSAProf2, "PeriodSATransactionCode", "TransactionCode",
                        "CASHDISC") != 0) {
                    //:dAmount = dAmount + mSAProf2.PeriodTransApplied.Amount 
                    {
                        MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                        GetDecimalFromAttribute(md_dTempDecimal_0, mSAProf2, "PeriodTransApplied", "Amount");
                        dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
                    }
                    dAmount = dAmount + dTempDecimal_0;
                }

            }

            RESULT = SetCursorNextEntity(mSAProf2, "PeriodTransApplied", "");
            //:END
        }

        //:END 
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dAmount, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dAmount, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dNonAuditCredits(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dTotalCredits 
    double dTotalCredits = 0.0;
    //:DECIMAL dCreditHours
    double dCreditHours = 0.0;
    int RESULT = 0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:// Total the credit hours that are not audited.
        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);
        //:NAME VIEW mSAProf2 "mSAProf2"
        SetNameForView(mSAProf2, "mSAProf2", null, zLEVEL_TASK);
        //:dTotalCredits = 0
        dTotalCredits = 0;/*from w ww . j  av  a  2 s  .  c o  m*/
        //:FOR EACH mSAProf2.TermEnrolled 
        RESULT = SetCursorFirstEntity(mSAProf2, "TermEnrolled", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF mSAProf2.TermEnrolled.TakingClassType != "A"    // Don't include audited credits.
            if (CompareAttributeToString(mSAProf2, "TermEnrolled", "TakingClassType", "A") != 0) {
                //:dCreditHours = mSAProf2.TermEnrolled.CreditHours 
                {
                    MutableDouble md_dCreditHours = new MutableDouble(dCreditHours);
                    GetDecimalFromAttribute(md_dCreditHours, mSAProf2, "TermEnrolled", "CreditHours");
                    dCreditHours = md_dCreditHours.doubleValue();
                }
                //:IF mSAProf2.TermEnrolled.Status ="T"  OR mSAProf2.TermEnrolled.Status ="C" 
                if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "T") == 0
                        || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "C") == 0) {
                    //:dTotalCredits = dTotalCredits + dCreditHours 
                    dTotalCredits = dTotalCredits + dCreditHours;
                    //:ELSE
                } else {
                    //:IF mSAProf2.TermEnrolled.Status ="D" OR mSAProf2.TermEnrolled.Status ="W" 
                    if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "D") == 0
                            || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "W") == 0) {
                        //:IF mSAProf2.TermEnrolled.DroppedDate > mSAProf2.PeriodCollegeTerm.AddDropDeadlineDate 
                        if (CompareAttributeToAttribute(mSAProf2, "TermEnrolled", "DroppedDate", mSAProf2,
                                "PeriodCollegeTerm", "AddDropDeadlineDate") > 0) {
                            //:dTotalCredits = dTotalCredits + dCreditHours
                            dTotalCredits = dTotalCredits + dCreditHours;
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

            RESULT = SetCursorNextEntity(mSAProf2, "TermEnrolled", "");
            //:END
        }

        //:END
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dTotalCredits, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dTotalCredits, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dCreditsEnComp(View mSAProf, String InternalEntityStructure, String InternalAttribStructure,
        Integer GetOrSetFlag) {//  www .j a  v  a2 s . c o  m
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dTotalCredits 
    double dTotalCredits = 0.0;
    //:DECIMAL dCreditHours
    double dCreditHours = 0.0;
    int RESULT = 0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:// Total the credit hours that will be billable. Note that a Class dropped after the
        //:// Dropped Date for the Term will be added here.
        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);
        //:NAME VIEW mSAProf2 "mSAProf2"
        SetNameForView(mSAProf2, "mSAProf2", null, zLEVEL_TASK);
        //:dTotalCredits = 0
        dTotalCredits = 0;
        //:FOR EACH mSAProf2.TermEnrolled 
        RESULT = SetCursorFirstEntity(mSAProf2, "TermEnrolled", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF mSAProf2.TermEnrolled.TakingClassType = "A"
            if (CompareAttributeToString(mSAProf2, "TermEnrolled", "TakingClassType", "A") == 0) {
                //:dCreditHours = mSAProf2.TermClass.CreditHours 
                {
                    MutableDouble md_dCreditHours = new MutableDouble(dCreditHours);
                    GetDecimalFromAttribute(md_dCreditHours, mSAProf2, "TermClass", "CreditHours");
                    dCreditHours = md_dCreditHours.doubleValue();
                }
                //:ELSE
            } else {
                //:dCreditHours = mSAProf2.TermEnrolled.CreditHours 
                {
                    MutableDouble md_dCreditHours = new MutableDouble(dCreditHours);
                    GetDecimalFromAttribute(md_dCreditHours, mSAProf2, "TermEnrolled", "CreditHours");
                    dCreditHours = md_dCreditHours.doubleValue();
                }
            }

            //:END
            //:IF mSAProf2.TermEnrolled.Status ="T"  OR mSAProf2.TermEnrolled.Status ="C" 
            if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "T") == 0
                    || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "C") == 0) {
                //:dTotalCredits = dTotalCredits + dCreditHours 
                dTotalCredits = dTotalCredits + dCreditHours;
                //:ELSE
            } else {
                //:IF mSAProf2.TermEnrolled.Status ="D" OR mSAProf2.TermEnrolled.Status ="W" 
                if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "D") == 0
                        || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "W") == 0) {
                    //:IF mSAProf2.TermEnrolled.DroppedDate > mSAProf2.PeriodCollegeTerm.AddDropDeadlineDate 
                    if (CompareAttributeToAttribute(mSAProf2, "TermEnrolled", "DroppedDate", mSAProf2,
                            "PeriodCollegeTerm", "AddDropDeadlineDate") > 0) {
                        //:dTotalCredits = dTotalCredits + dCreditHours
                        dTotalCredits = dTotalCredits + dCreditHours;
                    }

                    //:END
                }

                //:END
            }

            RESULT = SetCursorNextEntity(mSAProf2, "TermEnrolled", "");
            //:END
        }

        //:END
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dTotalCredits, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dTotalCredits, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_ComputeTotalTermPaid(View mSAProf, MutableDouble dReturnedTotalTermPaid, View mFAProf) {
    double dTotalCreditAmounts = 0.0;
    //:DECIMAL dTotalSACredits
    double dTotalSACredits = 0.0;
    //:DECIMAL dTotalDisbursements
    double dTotalDisbursements = 0.0;
    //:STRING ( 20 ) szAmount
    String szAmount = null;//from w ww .  j  a  v  a  2  s  .  c om
    int RESULT = 0;
    double dTempDecimal_0 = 0.0;
    double dTempDecimal_1 = 0.0;

    //:// Compute the total paid for the Term. This is a little complex because we can't determine the difference
    //:// between a payment SA Transaction and a financial aid SA Transaction. Thus, we will first total up
    //:// all credits for the period and then subtract all financial aid for the period from the mFAProf object.
    //:// Payments and Fin Aid transactions have Type of "Credit/Payment" and Bill Type of "Credit".

    //:// Total SA Credits for Term. We assume we're on correct Term.
    //:dTotalCreditAmounts = 0
    dTotalCreditAmounts = 0;
    //:FOR EACH mSAProf.PeriodTransApplied 
    RESULT = SetCursorFirstEntity(mSAProf, "PeriodTransApplied", "");
    while (RESULT > zCURSOR_UNCHANGED) {
        //:IF mSAProf.PeriodSATransactionCode.BillType = "C" AND 
        //:   mSAProf.PeriodSATransactionCode.Type     = "R"
        if (CompareAttributeToString(mSAProf, "PeriodSATransactionCode", "BillType", "C") == 0
                && CompareAttributeToString(mSAProf, "PeriodSATransactionCode", "Type", "R") == 0) {

            //:dTotalCreditAmounts = dTotalCreditAmounts + mSAProf.PeriodTransApplied.Amount
            {
                MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                GetDecimalFromAttribute(md_dTempDecimal_0, mSAProf, "PeriodTransApplied", "Amount");
                dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
            }
            dTotalCreditAmounts = dTotalCreditAmounts + dTempDecimal_0;
        }

        RESULT = SetCursorNextEntity(mSAProf, "PeriodTransApplied", "");
        //:END
    }

    //:END

    //:// dTotalCreditAmounts is always negative, so switch it to positive.
    //:dTotalSACredits = 0 - dTotalCreditAmounts
    dTotalSACredits = 0 - dTotalCreditAmounts;

    //:// Total FA Disbursements for Term. We assume we're on correct Term.
    //:// We are looking here for all "received" aid, which would be in the PeriodTransApplied entries above.
    //:// If the award entry has not been received, the mFAProf.PerPeriodFinAidAwardDisbursement.Amount value is 0.
    //:dTotalDisbursements = 0
    dTotalDisbursements = 0;
    //:IF mFAProf != 0 
    if (getView(mFAProf) != null) {
        //:FOR EACH mFAProf.PerPeriodFinAidAwardDisbursement 
        RESULT = SetCursorFirstEntity(mFAProf, "PerPeriodFinAidAwardDisbursement", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:dTotalDisbursements = dTotalDisbursements + mFAProf.PerPeriodFinAidAwardDisbursement.Amount 
            {
                MutableDouble md_dTempDecimal_1 = new MutableDouble(dTempDecimal_1);
                GetDecimalFromAttribute(md_dTempDecimal_1, mFAProf, "PerPeriodFinAidAwardDisbursement",
                        "Amount");
                dTempDecimal_1 = md_dTempDecimal_1.doubleValue();
            }
            dTotalDisbursements = dTotalDisbursements + dTempDecimal_1;
            RESULT = SetCursorNextEntity(mFAProf, "PerPeriodFinAidAwardDisbursement", "");
        }

        //:END
    }

    //:END

    //:// Return Difference
    //:dReturnedTotalTermPaid = dTotalSACredits - dTotalDisbursements
    dReturnedTotalTermPaid.setValue(dTotalSACredits - dTotalDisbursements);
    //:szAmount = dReturnedTotalTermPaid
    {
        StringBuilder sb_szAmount;
        if (szAmount == null)
            sb_szAmount = new StringBuilder(32);
        else
            sb_szAmount = new StringBuilder(szAmount);
        ZeidonStringConvertFromNumber(sb_szAmount, 1, 0, 20, 0, dReturnedTotalTermPaid.doubleValue(), "D");
        szAmount = sb_szAmount.toString();
    }
    //:TraceLineS( "*** dReturnedTotalTermPaid: ", szAmount )
    TraceLineS("*** dReturnedTotalTermPaid: ", szAmount);
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dCreditsDirectedStudy(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dTotalCredits 
    double dTotalCredits = 0.0;
    int RESULT = 0;
    double dTempDecimal_0 = 0.0;
    double dTempDecimal_1 = 0.0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:// Total the Directed Study credit hours that will be billable. Note that a Class dropped after the
        //:// Dropped Date for the Term will be added here.
        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);
        //:NAME VIEW mSAProf2 "mSAProf2"
        SetNameForView(mSAProf2, "mSAProf2", null, zLEVEL_TASK);
        //:dTotalCredits = 0
        dTotalCredits = 0;/*from   w  w w  . j a  va2s .  c  o m*/
        //:FOR EACH mSAProf2.TermEnrolled 
        RESULT = SetCursorFirstEntity(mSAProf2, "TermEnrolled", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF mSAProf2.TermClass.DirectedStudyFlag = "Y"
            if (CompareAttributeToString(mSAProf2, "TermClass", "DirectedStudyFlag", "Y") == 0) {
                //:IF mSAProf2.TermEnrolled.Status ="T"  OR mSAProf2.TermEnrolled.Status ="C" 
                if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "T") == 0
                        || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "C") == 0) {
                    //:dTotalCredits = dTotalCredits + mSAProf2.TermEnrolled.CreditHours 
                    {
                        MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                        GetDecimalFromAttribute(md_dTempDecimal_0, mSAProf2, "TermEnrolled", "CreditHours");
                        dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
                    }
                    dTotalCredits = dTotalCredits + dTempDecimal_0;
                    //:ELSE
                } else {
                    //:IF mSAProf2.TermEnrolled.Status ="D" OR mSAProf2.TermEnrolled.Status ="W" 
                    if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "D") == 0
                            || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "W") == 0) {
                        //:IF mSAProf2.TermEnrolled.DroppedDate > mSAProf2.PeriodCollegeTerm.AddDropDeadlineDate 
                        if (CompareAttributeToAttribute(mSAProf2, "TermEnrolled", "DroppedDate", mSAProf2,
                                "PeriodCollegeTerm", "AddDropDeadlineDate") > 0) {
                            //:dTotalCredits = dTotalCredits + mSAProf2.TermEnrolled.CreditHours
                            {
                                MutableDouble md_dTempDecimal_1 = new MutableDouble(dTempDecimal_1);
                                GetDecimalFromAttribute(md_dTempDecimal_1, mSAProf2, "TermEnrolled",
                                        "CreditHours");
                                dTempDecimal_1 = md_dTempDecimal_1.doubleValue();
                            }
                            dTotalCredits = dTotalCredits + dTempDecimal_1;
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

            RESULT = SetCursorNextEntity(mSAProf2, "TermEnrolled", "");
            //:END
        }

        //:END
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dTotalCredits, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dTotalCredits, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dCreditsInternship(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mSAProf2 = new zVIEW();
    //:DECIMAL dTotalCredits 
    double dTotalCredits = 0.0;
    int RESULT = 0;
    double dTempDecimal_0 = 0.0;
    double dTempDecimal_1 = 0.0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:// Total the Internship credit hours that will be billable. Note that a Class dropped after the
        //:// Dropped Date for the Term will be added here.
        //:CreateViewFromView ( mSAProf2, mSAProf )
        CreateViewFromView(mSAProf2, mSAProf);
        //:NAME VIEW mSAProf2 "mSAProf2"
        SetNameForView(mSAProf2, "mSAProf2", null, zLEVEL_TASK);
        //:dTotalCredits = 0
        dTotalCredits = 0;/* www.  j  av  a 2 s .c o  m*/
        //:FOR EACH mSAProf2.TermEnrolled 
        RESULT = SetCursorFirstEntity(mSAProf2, "TermEnrolled", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:IF mSAProf2.TermCourse.InternshipFlag = "Y"
            if (CompareAttributeToString(mSAProf2, "TermCourse", "InternshipFlag", "Y") == 0) {
                //:IF mSAProf2.TermEnrolled.Status ="T"  OR mSAProf2.TermEnrolled.Status ="C" 
                if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "T") == 0
                        || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "C") == 0) {
                    //:dTotalCredits = dTotalCredits + mSAProf2.TermEnrolled.CreditHours 
                    {
                        MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                        GetDecimalFromAttribute(md_dTempDecimal_0, mSAProf2, "TermEnrolled", "CreditHours");
                        dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
                    }
                    dTotalCredits = dTotalCredits + dTempDecimal_0;
                    //:ELSE
                } else {
                    //:IF mSAProf2.TermEnrolled.Status ="D" OR mSAProf2.TermEnrolled.Status ="W" 
                    if (CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "D") == 0
                            || CompareAttributeToString(mSAProf2, "TermEnrolled", "Status", "W") == 0) {
                        //:IF mSAProf2.TermEnrolled.DroppedDate > mSAProf2.PeriodCollegeTerm.AddDropDeadlineDate 
                        if (CompareAttributeToAttribute(mSAProf2, "TermEnrolled", "DroppedDate", mSAProf2,
                                "PeriodCollegeTerm", "AddDropDeadlineDate") > 0) {
                            //:dTotalCredits = dTotalCredits + mSAProf2.TermEnrolled.CreditHours
                            {
                                MutableDouble md_dTempDecimal_1 = new MutableDouble(dTempDecimal_1);
                                GetDecimalFromAttribute(md_dTempDecimal_1, mSAProf2, "TermEnrolled",
                                        "CreditHours");
                                dTempDecimal_1 = md_dTempDecimal_1.doubleValue();
                            }
                            dTotalCredits = dTotalCredits + dTempDecimal_1;
                        }

                        //:END
                    }

                    //:END
                }

                //:END
            }

            RESULT = SetCursorNextEntity(mSAProf2, "TermEnrolled", "");
            //:END
        }

        //:END
        //:DropView( mSAProf2 ) 
        DropView(mSAProf2);
        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dTotalCredits, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dTotalCredits, 0);
        break;
    //:   /* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:      /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dMaxPotentialCashDisc(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mSAChrgT = new zVIEW();
    //:VIEW lSATrnSh BASED ON LOD lSATrnSh
    zVIEW lSATrnSh = new zVIEW();
    //:DECIMAL dDiscountRate 
    double dDiscountRate = 0.0;
    //:DECIMAL dCashDiscount
    double dCashDiscount = 0.0;
    //:DECIMAL dTotalEligibleCharges
    double dTotalEligibleCharges = 0.0;
    //:STRING ( 25 ) szTemp
    String szTemp = null;/*w  w  w .j a  v  a  2  s. c  o m*/
    int lTempInteger_0 = 0;
    zVIEW vTempViewVar_0 = new zVIEW();
    int RESULT = 0;
    int lTempInteger_1 = 0;
    int lTempInteger_2 = 0;
    zVIEW vTempViewVar_1 = new zVIEW();
    double dTempDecimal_0 = 0.0;
    double dTempDecimal_1 = 0.0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

    //:// Determine the potential Cash Discount by adding up those charges for the Period that qualify
    //:// and multiplying them by the Discount Rate for the Term.
    //:// If no Discount Rate exists, don't compute a Cash Discount.
    //:   // Activate the Discount Rate for the Term.
    //:   ACTIVATE mSAChrgT WHERE mSAChrgT.SATransactionCode.TransactionCode = "CASHDISC"
    //:        RESTRICTING mSAChrgT.SATransactionTerm TO mSAChrgT.CollegeTerm.ID = mSAProf.PeriodCollegeTerm.ID 
    {
        MutableInt mi_lTempInteger_0 = new MutableInt(lTempInteger_0);
        GetIntegerFromAttribute(mi_lTempInteger_0, mSAProf, "PeriodCollegeTerm", "ID");
        lTempInteger_0 = mi_lTempInteger_0.intValue();
    }
        omSAProf_fnLocalBuildQual_22(mSAProf, vTempViewVar_0, lTempInteger_0);
        RESULT = ActivateObjectInstance(mSAChrgT, "mSAChrgT", mSAProf, vTempViewVar_0, zSINGLE);
        DropView(vTempViewVar_0);
        //:   NAME VIEW mSAChrgT "mSAChrgTDiscount"
        SetNameForView(mSAChrgT, "mSAChrgTDiscount", null, zLEVEL_TASK);
        //:   IF mSAChrgT.SATransactionTerm DOES NOT EXIST
        lTempInteger_1 = CheckExistenceOfEntity(mSAChrgT, "SATransactionTerm");
        if (lTempInteger_1 != 0) {
            //:   DropObjectInstance( mSAChrgT )
            DropObjectInstance(mSAChrgT);
            //:   RETURN -1
            if (8 == 8)
                return (-1);
        }

    //:   END
    //:   dDiscountRate = mSAChrgT.SATransactionTerm.Amount
    {
        MutableDouble md_dDiscountRate = new MutableDouble(dDiscountRate);
        GetDecimalFromAttribute(md_dDiscountRate, mSAChrgT, "SATransactionTerm", "Amount");
        dDiscountRate = md_dDiscountRate.doubleValue();
    }
    //:   
    //:   // Activate list of Transactions for the current BillingPeriod that are eligible for a discount.
    //:   ACTIVATE lSATrnSh Multiple WHERE lSATrnSh.BillingPeriod.ID = mSAProf.BillingPeriod.ID 
    //:                                AND lSATrnSh.SATransactionCode.EligibleForCashDiscount = "Y"
    {
        MutableInt mi_lTempInteger_2 = new MutableInt(lTempInteger_2);
        GetIntegerFromAttribute(mi_lTempInteger_2, mSAProf, "BillingPeriod", "ID");
        lTempInteger_2 = mi_lTempInteger_2.intValue();
    }
        omSAProf_fnLocalBuildQual_23(mSAProf, vTempViewVar_1, lTempInteger_2);
        RESULT = ActivateObjectInstance(lSATrnSh, "lSATrnSh", mSAProf, vTempViewVar_1, zMULTIPLE);
        DropView(vTempViewVar_1);
        //:   NAME VIEW lSATrnSh "lSATrnSh"
        SetNameForView(lSATrnSh, "lSATrnSh", null, zLEVEL_TASK);
        //:   dTotalEligibleCharges = 0
        dTotalEligibleCharges = 0;
        //:   FOR EACH lSATrnSh.StudentAccountTransApplied 
        RESULT = SetCursorFirstEntity(lSATrnSh, "StudentAccountTransApplied", "");
        while (RESULT > zCURSOR_UNCHANGED) {
            //:   dTotalEligibleCharges = dTotalEligibleCharges + lSATrnSh.StudentAccountTransApplied.Amount 
            {
                MutableDouble md_dTempDecimal_0 = new MutableDouble(dTempDecimal_0);
                GetDecimalFromAttribute(md_dTempDecimal_0, lSATrnSh, "StudentAccountTransApplied", "Amount");
                dTempDecimal_0 = md_dTempDecimal_0.doubleValue();
            }
            dTotalEligibleCharges = dTotalEligibleCharges + dTempDecimal_0;
            RESULT = SetCursorNextEntity(lSATrnSh, "StudentAccountTransApplied", "");
        }

    //:   END

    //:               
    //:   // Cash Discount is (Total Eligible Transactions - Approved Aid) * .03
    //:   dCashDiscount = ( dTotalEligibleCharges - mSAProf.BillingPeriod.dRegistrationDisbAmountApproved ) * dDiscountRate
    {
        MutableDouble md_dTempDecimal_1 = new MutableDouble(dTempDecimal_1);
        GetDecimalFromAttribute(md_dTempDecimal_1, mSAProf, "BillingPeriod", "dRegistrationDisbAmountApproved");
        dTempDecimal_1 = md_dTempDecimal_1.doubleValue();
    }
        dCashDiscount = (dTotalEligibleCharges - dTempDecimal_1) * dDiscountRate;
        //:   IF dCashDiscount < 0
        if (dCashDiscount < 0) {
            //:   dCashDiscount = 0
            dCashDiscount = 0;
        }

        //:   END
        //:                           
        //:   DropObjectInstance( lSATrnSh )
        DropObjectInstance(lSATrnSh);
        //:   DropObjectInstance( mSAChrgT )
        DropObjectInstance(mSAChrgT);

        //:StoreValueInRecord( mSAProf, InternalEntityStructure, 
        //:                    InternalAttribStructure, dCashDiscount, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dCashDiscount, 0);
        break;
    //:   
    //:   /* end zDERIVED_GET */

    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:   /* end zDERIVED_SET */
    //:END   /* case */
    return (0);
    // END
}

From source file:com.quinsoft.swauopencuas.mSAProf_Object.java

public int omSAProf_dTotalPerPeriodRegApp(View mSAProf, String InternalEntityStructure,
        String InternalAttribStructure, Integer GetOrSetFlag) {
    zVIEW mFAProf = new zVIEW();
    //:VIEW mFAProf2 BASED ON LOD mFAProf
    zVIEW mFAProf2 = new zVIEW();
    //:DECIMAL dAmount 
    double dAmount = 0.0;
    int RESULT = 0;
    int lTempInteger_0 = 0;

    //:CASE GetOrSetFlag
    switch (GetOrSetFlag) {
    //:OF zDERIVED_GET:
    case zDERIVED_GET:

        //:// This is same as dRegistrationDisbAmountApproved attribute in mFAProf.
        //:dAmount = 0
        dAmount = 0;/* w w  w .jav  a2 s  . c  om*/
        //:GET VIEW mFAProf NAMED "mFAProf"
        RESULT = GetViewByName(mFAProf, "mFAProf", mSAProf, zLEVEL_TASK);
        //:IF RESULT >= 0
        if (RESULT >= 0) {
            //:CreateViewFromView( mFAProf2, mFAProf )
            CreateViewFromView(mFAProf2, mFAProf);
            //:NAME VIEW mFAProf2 "mFAProf2"
            SetNameForView(mFAProf2, "mFAProf2", null, zLEVEL_TASK);
            //:SET CURSOR FIRST mFAProf2.CollegeTerm WITHIN mFAProf2.FinAidProfile 
            //:           WHERE mFAProf2.CollegeTerm.ID = mSAProf.PeriodCollegeTerm.ID
            {
                MutableInt mi_lTempInteger_0 = new MutableInt(lTempInteger_0);
                GetIntegerFromAttribute(mi_lTempInteger_0, mSAProf, "PeriodCollegeTerm", "ID");
                lTempInteger_0 = mi_lTempInteger_0.intValue();
            }
            RESULT = SetCursorFirstEntityByInteger(mFAProf2, "CollegeTerm", "ID", lTempInteger_0,
                    "FinAidProfile");
            //:IF RESULT >= zCURSOR_SET
            if (RESULT >= zCURSOR_SET) {
                //:dAmount = mFAProf2.PerProfileFinAidAwardPeriod.dRegistrationDisbAmountApproved
                {
                    MutableDouble md_dAmount = new MutableDouble(dAmount);
                    GetDecimalFromAttribute(md_dAmount, mFAProf2, "PerProfileFinAidAwardPeriod",
                            "dRegistrationDisbAmountApproved");
                    dAmount = md_dAmount.doubleValue();
                }
            }

            //:END
            //:DropView( mFAProf2 )
            DropView(mFAProf2);
        }

        //:END

        //:StoreValueInRecord( mSAProf,InternalEntityStructure,
        //:                    InternalAttribStructure, dAmount, 0 )
        StoreValueInRecord(mSAProf, InternalEntityStructure, InternalAttribStructure, dAmount, 0);
        break;
    //:/* end zDERIVED_GET */
    //:OF zDERIVED_SET:
    case zDERIVED_SET:
        break;
    }

    //:     /* end zDERIVED_SET */
    //:END  /* case */
    return (0);
    // END
}