All pastes #40032 Raw Edit

Unnamed

public text v1 · immutable
#40032 ·published 2006-02-05 01:16 UTC
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