; ; FILE: $File$ ; AUTHOR: W. R. CARITHERS ; CONTRIBUTORS: <<>> ; ; DESCRIPTION: ; THIS PROGRAM READS IN A SERIES OF TEST SCORES. IT THEN ; COMPUTES THE TRUNCATED INTEGER AVERAGE OF THE SCORES, AND ; COUNTS THE NUMBER OF A'S, B'S, C'S, D'S, AND F'S. CUTOFFS ; BETWEEN THE GRADES WILL BE TAKEN FROM COMMAND-LINE ARGUMENTS, ; OR THE STANDARD 90/80/70/60 POSITIONS IF NO ARGUMENTS ARE ; SUPPLIED. ; ; ARGUMENTS: ; COMMAND-LINE ARGUMENTS CONSIST OF ZERO TO FOUR INTEGER ; VALUES WHICH WILL BE USED AS CUTOFF POINTS BETWEEN THE ; VARIOUS GRADES. VALUES WILL BE USED AS A-B, B-C, C-D, AND ; D-F CUTOFFS IN SEQUENCE; IF FEWER THAN FOUR ARE GIVEN, DEFAULTS ; WILL BE USED FOR THE REMAINING VALUES. ; ; INPUT: ; THE DATA FOR THIS PROGRAM CONSISTS OF SERIES OF NUMBERS WHICH ; REPRESENT STUDENTS' SCORES ON AN EXAM. ; ; OUTPUT: ; THE OUTPUT FOR THIS PROGRAM CONSISTS OF THE LIST OF GRADE ; CUTOFF VALUES, FOLLOWED BY AN ECHO PRINT OF THE INPUT DATA, ; FOLLOWED BY THE CALCULATED AVERAGE SCORE ON THE EXAM AND THE ; FREQUENCY COUNTS OF A, B, C, D, AND F GRADES. ALL PORTIONS ; OF THE OUTPUT ARE LABELLED APPROPRIATELY. ; ; REVISION HISTORY: ; $Log$ ; ; ; CONSTANT DEFINITIONS ; ; ASCII CHARACTERS ; ; ; MISCELLANEOUS ; ; ; SYSTEM CALLS ; ; ; STORAGE DECLARATIONS ; ; CONSTANT (UNCHANGING) STORAGE AREAS ; ; ; ; ; ; VARIABLE (CHANGING) STORAGE AREAS ; ; ; ; ; ; PARAMETER BLOCKS ; ; ; ; ; ; ; ; *************************************** ; *************************************** ; ** ** ; ** EXECUTION STARTS HERE ** ; ** ** ; *************************************** ; *************************************** ; ; ; GET THE GRADE CUTOFF VALUES (IF SUPPLIED) ; ; ; ; PRINT FIRST HEADER, AND THE GRADE CUTOFF VALUES ; ; ; ; ; ; ; PRINT THE ECHO HEADER ; ; ; INITIALIZE VARIOUS COUNTERS ; ; ; MAIN PROGRAM LOOP ; ; WHILE NOT EOF DO ; ; ; ; SEE IF WE NEED TO TERMINATE THE PREVIOUS OUTPUT LINE ; ; ; ; DECIDE WHAT THIS SCORE REPRESENTS, AND DEAL WITH IT ACCORDINGLY. ; ; CASE SCORE OF ; ; ; ; ; ; ; ; PRINT FINAL RESULTS ; ; ; AT THIS POINT, THE NUMBER OF GRADES IS IN R8, AND THE SUM IS IN R7 ; ; ; PRINT OUR SUMMARY HEADER ; ; ; ; ; ; SUBROUTINE SECTION ; ; ********************************************************************* ; ; CVT_ARG - CONVERT NUMERIC STRING INTO LONGWORD ; ; TWO PARAMETERS: R1 = ADDRESS OF STRING, R2 = ADDRESS OF LONGWORD DEST. ; ; NOTE THAT THIS WILL ALWAYS MODIFY THE DESTINATION LONGWORD, AND ASSUMES ; THAT THE STRING IS NUL-TERMINATED. IT WILL ALSO STOP ON A NON-DIGIT ; CHARACTER IN THE STRING. ; ; ; ********************************************************************* ; ; PRINT_NUMBER(VALUE) - ECHO A NUMBER TO THE STANDARD OUTPUT ; ; ONE PARAMETER: R0 = VALUE TO BE PRINTED ; ; ; ********************************************************************* ; ; PRINT_NL - PRINT ONE NEWLINE CHARACTER ; ;