/**************************************************************/ /* */ /* MARKCALC - This program prompts user for marks and */ /* calculates a student's final grade */ /* */ /* Author: Cindy Laurin-Moogk */ /* Date: FEB 20, 2000 */ /* REVISED BY DEB MENKEN, WINTER 2002 */ /* REVISED BY TIM MCKENNA, FALL 2002 */ /**************************************************************/ PGM /* Field and File Declaration Section */ DCLF FILE(MARKSDF) /* display file object -- the + interactive screen */ /* Start of iteration (Processing Loop) */ SNDRCVF /* Program displays the screen and */ /* waits here for a response from */ /* the keyboard using the */ /* SeND ReCeiVe File command */ /* REPEAT THIS LOOP UNTIL F3 IS PRESSED */ DOWHILE COND(&IN03 *NE '1') chgvar &in31 '0' chgvar &error ' ' IF COND((&ASSIGN1 < 0) *OR (&ASSIGN1 > 5)) THEN(DO) chgvar &in30 '0' chgvar &error 'Assignment 1 is invalid' enddo ELSE CMD(CHGVAR &IN30 '0') IF COND((&ASSIGN2 < 0) *OR (&ASSIGN2 > 10)) + THEN(DO) chgvar &in31 '1' chgvar &error 'Assignment 2 is invalid' enddo /* reset calculated fields to neutral values */ CHGVAR VAR(&LETTER) VALUE(' ') /* letter grade */ chgvar &sum 0 IF COND((&IN30 = '1') *OR &IN31) THEN(GOTO NEXT) /* calc sum of marks */ CHGVAR VAR(&SUM) VALUE(&ASSIGN1 + &ASSIGN2 + + &ASSIGN3 + &TEST1 + &TEST2 + &LABS + &EXAM) /* positional notation */ SELECT WHEN COND(&SUM *GE 90) THEN(CHGVAR VAR(&LETTER) + VALUE('A+')) WHEN COND(&SUM *GE 80 *AND &SUM *LT 90) + THEN(CHGVAR VAR(&LETTER) VALUE('A+')) WHEN COND(&SUM *GE 80 *AND &SUM *LT 90) + THEN(CHGVAR VAR(&LETTER) VALUE('A ')) WHEN COND(&SUM *GE 75 *AND &SUM *LT 80) + THEN(CHGVAR VAR(&LETTER) VALUE('B+')) WHEN COND(&SUM *GE 70 *AND &SUM *LT 75) + THEN(CHGVAR VAR(&LETTER) VALUE('B ')) WHEN COND(&SUM *GE 65 *AND &SUM *LT 70) + THEN(CHGVAR VAR(&LETTER) VALUE('C+')) WHEN COND(&SUM *GE 60 *AND &SUM *LT 65) + THEN(CHGVAR VAR(&LETTER) VALUE('C ')) WHEN COND(&SUM *GE 55 *AND &SUM *LT 60) + THEN(CHGVAR VAR(&LETTER) VALUE('D ')) OTHERWISE CMD(CHGVAR VAR(&LETTER) VALUE('F')) ENDSELECT /* redisplay screen to user with Sum and Grade results */ /* End of iteration (processing loop) */ next: SNDRCVF /* Program displays the screen and */ /* waits here for a response from */ /* the keyboard using the */ /* SeND ReCeiVe File command */ ENDDO ENDPGM: ENDPGM