rendered paste body/**************************************************************/
/* */
/* 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