16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 1 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 c 0002 c Program: Grade 0003 c 0004 c Author: Mark R. Vevle 0005 c X-Ray Crystallographic Core Facility 0006 c University of Alabama at Birmingham 0007 c SDB 13, 244B LHR 0008 c University Station 0009 c Birmingham, Alabama 35294 0010 c (205) 934 - 2212/2149 0011 c 0012 c Disclaimer/rights: This software is in the public domain and is 0013 c provided free though DECUS or other channels. The 0014 c information in this software is subject to change 0015 c without notice and should not be construed as a 0016 c commitment by the author or his employer. The author 0017 c and his employer assumes no responsibility for the 0018 c use, the correctness, or the reliability of this 0019 c software. THIS SOFTWARE IS PROVIDED AS IS. 0020 c 0021 c Environment: VAX/VMS V3.0 or later 0022 c 0023 c Modifications: V1.0 -- Original Version. MRV 0024 c 0025 c 25-OCT-1984 V1.1 -- Add class average score for each grade to the 0026 c manager record. MRV 0027 c 0028 c 12-NOV-1984 V1.2 -- Add score names and scales to the manager 0029 c record. MRV 0030 c 0031 c 07-JAN-1985 V1.3 -- Add display of version number when creating a 0032 c new student database file. MRV 0033 c 0034 c Correct Manager record format (incorrect key 0035 c layout, Manager_Key_0 to short, 20 characters 0036 c rather than 40 characters which threw off the 0037 c Manager_Key_3 key. MRV 0038 c 0039 c 22-JAN-1985 V1.4 -- Modify the method used to calculate class 0040 c averages. Omit any zero scores/averages. MRV 0041 c 0042 c Add ROSTER to display options. MRV 0043 c 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 2 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0044 Program Grade 0045 c 0046 Parameter Maximum_Tests = 20 0047 Parameter Data_File_Lun = 1 0048 c 0049 c *** Layout of the student record 0050 c 0051 Character*20 Last_Name, First_Name, Department_Name 0052 Character*20 Student_Number, Comment 0053 Character*20 Test_Comments( Maximum_Tests ) 0054 Character*1 Letter_Grade 0055 c 0056 Logical*1 Test_Dropped( Maximum_Tests ) 0057 Logical*1 Student_Record( 620 ) 0058 c 0059 Real Test_Score( Maximum_Tests ) 0060 Real Average_Needed( 3 ) 0061 Real Average_Grade 0062 c 0063 Common / Record / 0064 1 Last_Name, ! 1 20 0065 1 First_Name, ! 21 40 0066 1 Student_Number, ! 41 60 0067 1 Department_Name, ! 61 80 0068 1 Comment, ! 81 100 0069 1 Test_Comments, ! 101 500 0070 1 Test_Dropped, ! 501 520 0071 1 Test_Score, ! 521 600 0072 1 Average_Needed, ! 601 612 0073 1 Average_Grade, ! 613 616 0074 1 Letter_Grade ! 617 618 0075 c 0076 Equivalence( Student_Record( 1 ), Last_Name ) 0077 Equivalence( Student_Record( 21 ), First_Name ) 0078 Equivalence( Student_Record( 41 ), Student_Number ) 0079 Equivalence( Student_Record( 61 ), Department_Name ) 0080 Equivalence( Student_Record( 81 ), Comment ) 0081 Equivalence( Student_Record( 101 ), Test_Comments ) 0082 Equivalence( Student_Record( 501 ), Test_Dropped ) 0083 Equivalence( Student_Record( 521 ), Test_Score ) 0084 Equivalence( Student_Record( 601 ), Average_Needed ) 0085 Equivalence( Student_Record( 613 ), Average_Grade ) 0086 Equivalence( Student_Record( 617 ), Letter_Grade ) 0087 c 0088 c *** Layout of the managment record. Key is Null ( ASCII 0 ). 0089 c 0090 Character*40 Manager_Key_0 0091 Character*20 Manager_Key_1, Manager_Key_2 0092 Character*8 Manager_Test_Name( Maximum_Tests ) 0093 c 0094 Integer Manager_Counts( 5 ), Manager_Num_Tests 0095 c 0096 Logical*1 Manager_Dropped( Maximum_Tests ) 0097 Logical*1 Manager_Record( 508 ) 0098 c 0099 Real Manager_Weights( Maximum_Tests ) 0100 Real Manager_Scale( Maximum_Tests ) GRADE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 3 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0101 Real Manager_Score_Average( Maximum_Tests ) 0102 Real Manager_Average_Grade 0103 c 0104 Common / Manager / 0105 1 Manager_Key_0, ! 1 40 0106 1 Manager_Key_1, ! 41 60 0107 1 Manager_Key_2, ! 61 60 0108 1 Manager_Dropped, ! 81 100 0109 1 Manager_Weights, ! 101 180 0110 1 Manager_Counts, ! 181 200 0111 1 Manager_Average_Grade, ! 201 204 0112 1 Manager_Num_Tests, ! 205 208 0113 1 Manager_Scale, ! 209 288 0114 1 Manager_Score_Average, ! 289 368 0115 1 Manager_Test_Name ! 369 528 0116 c 0117 Equivalence( Manager_Record( 1 ), Manager_Key_0 ) 0118 Equivalence( Manager_Record( 41 ), Manager_Key_1 ) 0119 Equivalence( Manager_Record( 61 ), Manager_Key_2 ) 0120 Equivalence( Manager_Record( 81 ), Manager_Dropped ) 0121 Equivalence( Manager_Record( 101 ), Manager_Weights ) 0122 Equivalence( Manager_Record( 181 ), Manager_Counts ) 0123 Equivalence( Manager_Record( 201 ), Manager_Average_Grade ) 0124 Equivalence( Manager_Record( 205 ), Manager_Num_Tests ) 0125 Equivalence( Manager_Record( 209 ), Manager_Scale ) 0126 Equivalence( Manager_Record( 289 ), Manager_Score_Average ) 0127 Equivalence( Manager_Record( 369 ), Manager_Test_Name ) 0128 c 0129 Integer Student_File_Open 0130 c 0131 If ( Student_File_Open( Data_File_Lun ) ) Then 0132 Call Main_Menu 0133 Close ( Unit = Data_File_Lun ) 0134 Call Lib$Set_Cursor ( 22, 1 ) 0135 End IF 0136 c 0137 End GRADE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 4 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 46 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 8 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 28 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1230 ENTRY POINTS Address Type Name 0-00000000 GRADE VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name FOR$CLOSE LIB$SET_CURSOR MAIN_MENU I*4 STUDENT_FILE_OPEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 5 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 6 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Main_Menu 0004 c 0005 Character*1 Option 0006 c 0007 Logical*1 Done / .False. / 0008 c 0009 Do While ( .Not. Done ) 0010 c 0011 Call Draw_Main_Menu 0012 c 0013 Length = 1 0014 Option = '?' 0015 c 0016 Call Select_Option ( 'CDMU', Option, Length, 20, 33, 1 ) 0017 c 0018 If ( Option .eq. 'U' ) Then 0019 Call Update_Menu 0020 Else If ( Option .eq. 'D' ) Then 0021 Call Display_Menu 0022 Else If ( Option .eq. 'M' ) Then 0023 Call Manager_Menu 0024 Else If ( Option .eq. 'C' ) Then 0025 Call Calculate_Grades 0026 Else 0027 Done = .True. 0028 End If 0029 c 0030 End Do 0031 c 0032 Return 0033 End MAIN_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 7 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 121 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 17 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 52 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 190 ENTRY POINTS Address Type Name 0-00000000 MAIN_MENU VARIABLES Address Type Name Address Type Name Address Type Name 2-00000001 L*1 DONE 2-00000004 I*4 LENGTH 2-00000000 CHAR OPTION FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name CALCULATE_GRADES DISPLAY_MENU DRAW_MAIN_MENU MANAGER_MENU SELECT_OPTION UPDATE_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 8 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 9 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Calculate_Grades 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Include 'Manager.Rec' 0090 c 0091 Character*30 Total_Line 0092 Character*2 Max_Score 0093 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0094 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0095 Character*1 Letters( 5 ) / 'A', 'B', 'C', 'D', 'F' / 0096 Character*1 Option 0097 c 0098 Integer Get_Integer, Student_Count, Counts( 5 ) 0099 Integer M( Maximum_Tests ), Average_Count 0100 Integer Class_Count( Maximum_Tests ) 0101 c 0102 Real Class_Average, P( Maximum_Tests, 2 ) 0103 Real S( 3 ) 0104 Real Class_Score_Average( Maximum_Tests ) 0105 c 0106 Call Draw_Menu_Header ( 'Calculate Grades', 3 ) 0107 c 0108 If ( Get_Integer ( Number_of_Scores, 10, 1, 1, Manager_Num_Tests, 0109 1 'Enter the number of scores to use for grade ' // 0110 1 'calculations', ) ) Then 0111 c 0112 If ( Number_of_Scores .gt. 1 ) Then 0113 c 0114 Call Lib$Erase_Line ( 10, 1 ) 0115 Write ( Max_Score, 30 ) Number_of_Scores 0116 c 0117 If ( Max_Score( 1: 1 ) .eq. ' ' ) Then 0118 Max_Score( 1: 1 ) = Null 0119 K = 65 0120 Else 0121 K = 66 0122 End If 0123 c 0124 If ( .Not. ( Get_Integer ( Number_to_Drop, 10, 1, 0, 0125 1 Number_of_Scores, 0126 1 'Enter the maximum number of scores than can be dropped' ) ) ) Then 0127 Number_To_Drop = 0 0128 End If 0129 c 0130 Else 0131 Number_to_Drop = 0 0132 End If 0133 c 0134 Read ( Data_File_Lun, 0135 1 Key = Null, 0136 1 KeyId = 0, 0137 1 IoStat = Ios ) Manager_Record 0138 c 0139 S( 1 ) = 90.0 0140 S( 2 ) = 80.0 CALCULATE_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 10 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 S( 3 ) = 70.0 0142 Student_Count = 0 0143 Average_Count = 0 0144 Class_Average = 0.0 0145 Points_Remaining = 0.0 0146 c 0147 Do I = ( Number_of_Scores + 1 ), Manager_Num_Tests 0148 Points_Remaining = Points_Remaining + Manager_Weights( I ) 0149 End Do 0150 c 0151 Do I = 1, Number_of_Scores 0152 Class_Score_Average( I ) = 0.0 0153 Class_Count ( I ) = 0 0154 End Do 0155 c 0156 Do I = 1, 5 0157 Counts( I ) = 0 0158 End Do 0159 c 0160 Read ( Data_File_Lun, 0161 1 KeyGt = Null, 0162 1 KeyId = 0, 0163 1 IoStat = Ios ) Student_Record 0164 c 0165 Do While ( Ios .eq. 0 ) 0166 c 0167 J = 0 0168 Total = 0.0 0169 Total_Weight = 0.0 0170 Possible_Points = 0.0 0171 Student_Count = Student_Count + 1 0172 c 0173 c **** Calculate the average score 0174 c 0175 Do I = 1, Number_of_Scores 0176 c 0177 If ( Test_Score( I ) .gt. 0 ) Then 0178 Class_Score_Average( I ) = Class_Score_Average( I ) + 0179 1 Test_Score( I ) + 0180 1 Manager_Scale( I ) 0181 Class_Count( I ) = Class_Count( I ) + 1 0182 W = Test_Score( I ) + Manager_Scale( I ) 0183 Else 0184 W = 0.0 0185 End If 0186 0187 c 0188 Test_Dropped( I ) = .True. 0189 Y = Manager_Weights( I ) 0190 c 0191 If ( ( Manager_Dropped( I ) ) .and. 0192 1 ( Number_to_Drop .gt. 0 ) ) Then 0193 J = J + 1 0194 P( J, 1 ) = W 0195 P( J, 2 ) = Y 0196 M( J ) = I 0197 Else CALCULATE_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 11 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0198 V = Average_Grade 0199 X = Possible_Points 0200 U = W * Y 0201 Z = X + Y 0202 Total = Total + U 0203 Total_Weight = Total_Weight + Y 0204 Possible_Points = Z 0205 Average_Grade = ( ( V * X ) + U ) / Z 0206 Test_Dropped( I ) = .False. 0207 End If 0208 c 0209 End Do 0210 c 0211 If ( J .gt. 0 ) Then 0212 c 0213 Call Shell_Sort ( P, M, J ) 0214 c 0215 I = 1 0216 c 0217 Do While ( ( ( Average_Grade .le. 0218 1 Test_Score( M( I ) ) ) .or. 0219 1 ( Number_To_Drop .le. ( J - I ) ) ) .and. 0220 1 ( I .le. J ) ) 0221 c 0222 If ( Test_Score( M( I ) ) .gt. 0 ) Then 0223 W = Test_Score( M( I ) ) + Manager_Scale( M( I ) ) 0224 Else 0225 W = 0.0 0226 End If 0227 c 0228 V = Average_Grade 0229 X = Possible_Points 0230 Y = Manager_Weights( M( I ) ) 0231 U = W * Y 0232 Z = X + Y 0233 Total = Total + U 0234 Total_Weight = Total_Weight + Y 0235 Possible_Points = Z 0236 Average_Grade = ( ( V * X ) + U ) / Z 0237 Test_Dropped( M( I ) ) = .False. 0238 I = I + 1 0239 c 0240 End Do 0241 c 0242 End If 0243 c 0244 c **** Calculate score necessary to make A, B, C. 0245 c 0246 If ( Points_Remaining .gt. 0.0 ) Then 0247 Total_Weight = Total_Weight + Points_Remaining 0248 Do I = 1, 3 0249 Average_Needed( I ) = ( ( S( I ) * Total_Weight ) 0250 1 - Total ) / 0251 1 Points_Remaining 0252 End Do 0253 Else 0254 Do I = 1, 3 CALCULATE_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 12 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0255 Average_Needed( I ) = 0.0 0256 End Do 0257 End If 0258 c 0259 c **** Assign letter grades and count number of A's, B's, C's, D's, 0260 c **** and F's. 0261 c 0262 If ( Average_Grade .ge. 90.0 ) Then 0263 Letter_Grade = 'A' 0264 Counts( 1 ) = Counts( 1 ) + 1 0265 Else If ( Average_Grade .ge. 80.0 ) Then 0266 Letter_Grade = 'B' 0267 Counts( 2 ) = Counts( 2 ) + 1 0268 Else If ( Average_Grade .ge. 70.0 ) Then 0269 Letter_Grade = 'C' 0270 Counts( 3 ) = Counts( 3 ) + 1 0271 Else If ( Average_Grade .ge. 60.0 ) Then 0272 Letter_Grade = 'D' 0273 Counts( 4 ) = Counts( 4 ) + 1 0274 Else 0275 Letter_Grade = 'F' 0276 Counts( 5 ) = Counts( 5 ) + 1 0277 End If 0278 c 0279 If ( Average_Grade .gt. 0 ) Then 0280 Class_Average = Class_Average + Average_Grade 0281 Average_Count = Average_Count + 1 0282 End If 0283 c 0284 ReWrite ( Data_File_Lun ) Student_Record 0285 c 0286 c **** Get next student record 0287 c 0288 Read ( Data_File_Lun, 0289 1 IoStat = Ios ) Student_Record 0290 c 0291 End Do 0292 c 0293 Read ( Data_File_Lun, 0294 1 Key = Null, 0295 1 KeyId = 0, 0296 1 IoStat = Ios ) Manager_Record 0297 c 0298 Manager_Average_Grade = Class_Average / Average_Count 0299 c 0300 Do I = 1, Number_of_Scores 0301 Manager_Score_Average( I ) = Class_Score_Average( I ) / 0302 1 Class_Count( I ) 0303 End Do 0304 c 0305 Do I = 1, 5 0306 Manager_Counts( I ) = Counts( I ) 0307 End Do 0308 c 0309 ReWrite ( Data_File_Lun ) Manager_Record 0310 c 0311 End If CALCULATE_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 13 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0312 c 0313 Write ( Total_Line, 10 ) Manager_Average_Grade 0314 Call Lib$Put_Screen ( Total_Line, 12, 27, 1 ) 0315 Call Lib$Put_Screen ( ' Grade # of students', 14, 27, 1 ) 0316 c 0317 Do I = 1, 5 0318 Write ( Total_Line, 20 ) Letters( I ), Manager_Counts( I ) 0319 Call Lib$Put_Screen ( Total_Line, 14 + I, 27, 1 ) 0320 End Do 0321 c 0322 Call Lib$Put_Screen ( ' Hit to continue ', 22, 27, 2 ) 0323 Call Lib$Get_Screen ( Option, , ) 0324 0325 Return 0326 c 0327 10 Format ( 'Class average: ', F10.2 ) 0328 20 Format ( ' ', A, ' ', I7 ) 0329 30 Format ( I2 ) 0330 c 0331 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1255 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 268 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 816 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 3487 ENTRY POINTS Address Type Name 0-00000000 CALCULATE_GRADES VARIABLES Address Type Name Address Type Name 2-000001DC I*4 AVERAGE_COUNT 3-00000264 R*4 AVERAGE_GRADE 2-000001E0 R*4 CLASS_AVERAGE 3-00000050 CHAR COMMENT ** CHAR CR 3-0000003C CHAR DEPARTMENT_NAME ** CHAR FF 3-00000014 CHAR FIRST_NAME ** I*4 I 2-000001EC I*4 IOS 2-000001F4 I*4 J ** I*4 K 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE ** CHAR LF 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 CALCULATE_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 14 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-000001D3 CHAR MAX_SCORE 2-000001D5 CHAR NULL 2-000001E4 I*4 NUMBER_OF_SCORES 2-000001E8 I*4 NUMBER_TO_DROP 2-000001D6 CHAR OPTION 2-000001F0 R*4 POINTS_REMAINING ** R*4 POSSIBLE_POINTS ** CHAR SI ** CHAR SO 2-000001D8 I*4 STUDENT_COUNT 3-00000028 CHAR STUDENT_NUMBER 2-000001F8 R*4 TOTAL 2-000001B5 CHAR TOTAL_LINE ** R*4 TOTAL_WEIGHT ** R*4 U ** R*4 V ** R*4 W ** R*4 X ** R*4 Y ** R*4 Z ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 2-00000064 I*4 CLASS_COUNT 80 (20) 2-00000160 R*4 CLASS_SCORE_AVERAGE 80 (20) 2-00000000 I*4 COUNTS 20 (5) 2-000001B0 CHAR LETTERS 5 (5) 2-00000014 I*4 M 80 (20) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 2-000000B4 R*4 P 160 (20, 2) 2-00000154 R*4 S 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label 1-000000DE 10' 1-000000F3 20' 1-00000109 30' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_HEADER I*4 GET_INTEGER LIB$ERASE_LINE LIB$GET_SCREEN LIB$PUT_SCREEN SHELL_SORT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 15 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 16 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Shell_Sort ( P, Idx, J ) 0004 c 0005 Integer J, Idx( 20 ) 0006 c 0007 Logical All_Done 0008 c 0009 Real P( 20, 2 ) 0010 c 0011 Jump = J 0012 c 0013 Do While ( Jump .gt. 1 ) 0014 Jump = Jump / 2 0015 All_Done = .False. 0016 Do While ( .Not. All_Done ) 0017 All_Done = .True. 0018 Do M = 1, ( J - Jump ) 0019 N = M + Jump 0020 If ( ( P( M, 1 ) .lt. P( N, 1 ) ) .or. 0021 1 ( ( P( M, 1 ) .eq. P( N, 1 ) ) .and. 0022 1 ( P( M, 2 ) .gt. P( N, 2 ) ) ) ) Then 0023 Call Real_Swap ( P( M, 1 ), P( N, 1 ) ) 0024 Call Real_Swap ( P( M, 2 ), P( N, 2 ) ) 0025 Call Intr_Swap ( Idx( M ), Idx( N ) ) 0026 All_Done = .False. 0027 End If 0028 End Do 0029 End Do 0030 End Do 0031 c 0032 Return 0033 End SHELL_SORT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 17 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 193 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 52 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 245 ENTRY POINTS Address Type Name 0-00000000 SHELL_SORT VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*4 ALL_DONE AP-0000000C@ I*4 J ** I*4 JUMP ** I*4 M ** I*4 N ARRAYS Address Type Name Bytes Dimensions AP-00000008@ I*4 IDX 80 (20) AP-00000004@ R*4 P 160 (20, 2) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name INTR_SWAP REAL_SWAP 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 18 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 19 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Intr_Swap ( I, J ) 0004 c 0005 Integer I, J 0006 c 0007 K = I 0008 I = J 0009 J = K 0010 c 0011 Return 0012 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 16 PIC CON REL LCL SHR EXE RD NOWRT LONG Total Space Allocated 16 ENTRY POINTS Address Type Name 0-00000000 INTR_SWAP VARIABLES Address Type Name Address Type Name Address Type Name AP-00000004@ I*4 I AP-00000008@ I*4 J ** I*4 K 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 20 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 21 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Real_Swap ( A, B ) 0004 c 0005 Real A, B 0006 c 0007 X = A 0008 A = B 0009 B = X 0010 c 0011 Return 0012 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 16 PIC CON REL LCL SHR EXE RD NOWRT LONG Total Space Allocated 16 ENTRY POINTS Address Type Name 0-00000000 REAL_SWAP VARIABLES Address Type Name Address Type Name Address Type Name AP-00000004@ R*4 A AP-00000008@ R*4 B ** R*4 X 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 22 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 23 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Menu 0004 c 0005 Character*80 File_Name 0006 Character*15 Prompt( 0: 2 ) 0007 Character*1 So / 14 /, Si / 15 /, Option 0008 c 0009 Integer Key, P_Size( 0: 2 ) / 9, 6, 15 / 0010 c 0011 Logical*1 Done, Screen, Finished 0012 c 0013 Common / Block_1 / Screen 0014 c 0015 Data Prompt / 'LAST name ', 0016 1 'NUMBER ', 0017 1 'DEPARTMENT name' / 0018 c 0019 External One_Full_Display 0020 c 0021 Call Draw_Menu_Header ( 'Display Student Records', 1 ) 0022 c 0023 Call Lib$Put_Screen ( 'Enter output specification: ', 8, 1, 1 ) 0024 Call Lib$Get_Screen ( File_Name, , Length ) 0025 Call Str$UpCase ( File_Name( : Length ), File_Name( : Length ) ) 0026 c 0027 If ( ( File_Name ( : 10 ) .eq. 'SYS$OUTPUT' ) .or. 0028 1 ( File_Name ( : 3 ) .eq. 'TT:' ) ) Then 0029 Screen = .True. 0030 Else 0031 Screen = .False. 0032 End If 0033 c 0034 Open ( Unit = 2, 0035 1 Name = File_Name( : Length ), 0036 1 DefaultFile = 'Class.Lis', 0037 1 Status = 'NEW', 0038 1 Access = 'Sequential', 0039 1 Organization = 'Sequential', 0040 1 Form = 'Formatted', 0041 1 Recl = 132, 0042 1 CarriageControl = 'LIST' ) 0043 c 0044 Finished = .False. 0045 c 0046 Do While ( .Not. Finished ) 0047 c 0048 Call Select_Sort_Menu 0049 c 0050 Done = .False. 0051 Length = 1 0052 Option = '?' 0053 c 0054 Call Select_Option ( 'DNS', Option, Length, 17, 33, 1 ) 0055 c 0056 If ( Length .le. 0 ) Then 0057 Finished = .True. 0058 Else If ( Option .eq. 'D' ) Then DISPLAY_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 24 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0059 Key = 2 0060 Else If ( Option .eq. 'N' ) Then 0061 Key = 0 0062 Else If ( Option .eq. 'S' ) Then 0063 Key = 1 0064 End If 0065 c 0066 Do While ( ( .not. Done ) .and. ( .not. Finished ) ) 0067 c 0068 Call Draw_Display_Screen 0069 c 0070 Length = 1 0071 Option = '?' 0072 c 0073 Call Select_Option ( 'BFMORS', Option, Length, 21, 33, 1 ) 0074 c 0075 If ( Length .le. 0 ) Then 0076 Done = .True. 0077 Else 0078 c 0079 Call Lib$Erase_Page ( 6, 1 ) 0080 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0081 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0082 c 0083 If ( Option .eq. 'B' ) Then 0084 Call Brief_Display ( Screen, Key ) 0085 Else If ( Option .eq. 'F' ) Then 0086 Call Full_Display ( Screen, Key ) 0087 Else If ( Option .eq. 'M' ) Then 0088 Call Manager_Display ( Screen ) 0089 Else If ( Option .eq. 'O' ) Then 0090 Call Select_By_Key ( Key, 0091 1 Prompt( Key )( : P_Size( Key ) ), 0092 1 'displayed', One_Full_Display ) 0093 Else If ( Option .eq. 'R' ) Then 0094 Call Student_Roster ( Screen, Key ) 0095 Else If ( Option .eq. 'S' ) Then 0096 Call Draw_Score_Sheet ( Screen, Key ) 0097 End If 0098 c 0099 End If 0100 c 0101 End Do 0102 c 0103 End Do 0104 c 0105 Close ( Unit = 2 ) 0106 c 0107 Return 0108 End DISPLAY_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 25 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 490 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 129 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 496 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 BLOCK_1 1 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1116 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_MENU VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*1 DONE 2-00000039 CHAR FILE_NAME ** L*1 FINISHED 2-0000008C I*4 KEY 2-00000090 I*4 LENGTH 2-0000008B CHAR OPTION 3-00000000 L*1 SCREEN 2-0000008A CHAR SI 2-00000089 CHAR SO ARRAYS Address Type Name Bytes Dimensions 2-0000000C CHAR PROMPT 45 (0:2) 2-00000000 I*4 P_SIZE 12 (0:2) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name BRIEF_DISPLAY DRAW_DISPLAY_SCREEN DRAW_MENU_HEADER DRAW_SCORE_SHEET FOR$CLOSE FOR$OPEN FULL_DISPLAY LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN MANAGER_DISPLAY ONE_FULL_DISPLAY SELECT_BY_KEY SELECT_OPTION SELECT_SORT_MENU STR$UPCASE STUDENT_ROSTER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 26 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 27 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Score_Sheet ( Screen, Key ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Include 'Manager.Rec' 0090 c 0091 Integer Key, Page, Get_Integer 0092 c 0093 Logical*1 Screen, Toggle 0094 c 0095 Character*64 Title 0096 Character*30 Name 0097 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0098 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0099 Character*1 Option 0100 c 0101 Call Lib$Put_Screen ( 0102 1 'Enter the title for the score sheet below ', 0103 1 8, 1, 1 ) 0104 Call Lib$Put_Screen ( So // 0105 1 'oooooooooooooooooooooooooooooooo' // 0106 1 'oooooooooooooooooooooooooooooooo' // Si, 0107 1 11, 2, 1 ) 0108 Call Lib$Set_Cursor ( 10, 2 ) 0109 Call Lib$Get_Screen ( Title, , Length ) 0110 c 0111 If ( .Not. Get_Integer ( Number, 12, 1, 0, Manager_Num_Tests, 0112 1 'Enter the score to be displayed (0 for a blank sheet)' 0113 1 ) ) Number = 0 0114 c 0115 Read ( Data_File_Lun, 0116 1 KeyGt = Null, 0117 1 KeyId = Key, 0118 1 IoStat = Ios ) Student_Record 0119 c 0120 If ( Screen ) Then 0121 Call Lib$Erase_Page ( 6, 1 ) 0122 Call Lib$Set_Scroll ( 11, 24 ) 0123 Call Lib$Set_Cursor ( 6, 1 ) 0124 Write ( 2, 10 ) Cr // Lf, Title( : Length ) // Cr // Lf 0125 Write ( 2, 15 ) 0126 Write ( 2, 20 ) Cr // Lf 0127 End If 0128 c 0129 Toggle = .True. 0130 Line_Number = 28 0131 Page = 1 0132 c 0133 Do While ( Ios .eq. 0 ) 0134 c 0135 If ( ( .not. Screen ) .and. ( Line_Number .ge. 28 ) ) Then 0136 Write ( 2, 10 ) FF // Cr // Lf, 0137 1 Title ( : Length ), Page, Cr // Lf 0138 Page = Page + 1 0139 Write ( 2, 15 ) 0140 Write ( 2, 20 ) Cr // Lf DRAW_SCORE_SHEET 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 28 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 Line_Number = 0 0142 End If 0143 c 0144 II = Index ( Last_Name, ' ' ) - 1 0145 If ( II .le. 0 ) II = 20 0146 JJ = Index ( First_Name, ' ' ) - 1 0147 If ( JJ .le. 0 ) JJ = 20 0148 If ( ( II + JJ ) .gt. 20 ) JJ = 20 - II 0149 c 0150 If ( Toggle ) Then 0151 Toggle = .False. 0152 Name = Last_Name( : II ) // ', ' // First_Name( : JJ ) 0153 Name_Size = II + JJ + 2 0154 If ( Number .gt. 0 ) Score = Test_Score( Number ) 0155 Else 0156 Toggle = .True. 0157 Line_Number = Line_Number + 1 0158 If ( Number .le. 0 ) Then 0159 Write ( 2, 30 ) Name( : Name_Size ), 0160 1 Last_Name( : II ) // ', ' // 0161 1 First_Name( : JJ ), 0162 1 Cr // Lf 0163 Else 0164 Write ( 2, 40 ) Name( : Name_Size ), Score, 0165 1 Last_Name( : II ) // ', ' // 0166 1 First_Name( : JJ ), 0167 1 Test_Score( Number ), 0168 1 Cr // Lf 0169 End If 0170 End If 0171 c 0172 Read ( Data_File_Lun, 0173 1 IoStat = Ios ) Student_Record 0174 c 0175 End Do 0176 c 0177 If ( .not. Toggle ) Then 0178 If ( Number .le. 0 ) Then 0179 Write ( 2, 30 ) Name( : Name_Size ), Cr // Lf 0180 Else 0181 Write ( 2, 40 ) Name( : Name_Size ), Score, Cr // Lf 0182 End If 0183 End If 0184 0185 If ( Screen ) Then 0186 Call Lib$Put_Screen ( Cr // Lf // Lf // 0187 1 ' Hit to continue ', , , 2 ) 0188 Call Lib$Get_Screen ( Option, , ) 0189 Call Lib$Set_Scroll ( 1, 24 ) 0190 End If 0191 c 0192 Return 0193 c 0194 10 Format ( A, < ( 76 - Length ) / 2 >X, A, T75, 'Page ', I2 ) 0195 15 Format ( 'Student Name ', 2X, 'Score', 13X, 0196 1 'Student Name ', 2X, 'Score' ) 0197 DRAW_SCORE_SHEET 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 29 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0198 20 Format ( 78( '-' ), A ) 0199 30 Format ( A, <24 - Name_Size>X, 10( '_' ),10X, A, 0200 1 :, <22 - II - JJ>X, 10( '_' ), A ) 0201 40 Format ( A, <24 - Name_Size>X, F7.2, 13X, A, 0202 1 :, <22 - II - JJ>X, F7.2, A ) 0203 c 0204 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1402 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 357 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 428 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 3335 ENTRY POINTS Address Type Name 0-00000000 DRAW_SCORE_SHEET VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000063 CHAR CR 3-0000003C CHAR DEPARTMENT_NAME 2-00000062 CHAR FF 3-00000014 CHAR FIRST_NAME 2-00000074 I*4 II 2-00000070 I*4 IOS 2-00000078 I*4 JJ AP-00000008@ I*4 KEY 3-00000000 CHAR LAST_NAME 2-00000068 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000064 CHAR LF ** I*4 LINE_NUMBER 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-00000041 CHAR NAME 2-0000007C I*4 NAME_SIZE 2-00000061 CHAR NULL 2-0000006C I*4 NUMBER 2-00000065 CHAR OPTION ** I*4 PAGE 2-00000080 R*4 SCORE AP-00000004@ L*1 SCREEN 2-00000060 CHAR SI 2-0000005F CHAR SO 3-00000028 CHAR STUDENT_NUMBER 2-00000001 CHAR TITLE 2-00000000 L*1 TOGGLE DRAW_SCORE_SHEET 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 30 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label Address Label Address Label 1-00000088 10' 1-0000009C 15' 1-000000E5 20' 1-000000EF 30' 1-00000112 40' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 GET_INTEGER LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 31 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 32 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Manager_Display ( Screen ) 0004 c 0005 Parameter Maximum_Tests = 20 0006 c 0007 Include 'Manager.Rec' 0050 c 0051 Logical*1 Screen 0052 c 0053 Character*1 Cr / 13 /, Lf / 10 / 0054 Character*1 FF / 12 /, Null / 0 /, Option 0055 c 0056 If ( Screen ) Then 0057 Call Lib$Erase_Page ( 6, 1 ) 0058 Call Lib$Set_Scroll ( 11, 24 ) 0059 Call Lib$Set_Cursor ( 7, 1 ) 0060 Else 0061 Write ( 2, 5) FF 0062 End If 0063 c 0064 Write ( 2, 10 ) 0065 c 0066 Do I = 1, Manager_Num_Tests 0067 c 0068 Write ( 2, 20 ) I, 0069 1 Manager_Test_Name( I ), 0070 1 Manager_Weights( I ), 0071 1 Manager_Scale( I ), 0072 1 Manager_Dropped( I ), 0073 1 Manager_Score_Average( I ) 0074 c 0075 End Do 0076 c 0077 If ( Screen ) Then 0078 Call Lib$Put_Screen ( Cr // Lf // Lf // 0079 1 ' Hit to continue ', , , 2 ) 0080 Call Lib$Get_Screen ( Option, , ) 0081 Call Lib$Set_Scroll ( 1, 24 ) 0082 End If 0083 c 0084 Return 0085 c 0086 5 Format ( A, // ) 0087 10 Format ( 31X, 'Score Descriptions', //, 0088 1 'Number Name Weight Scale ', 0089 1 'Drop Class Average', /, 0090 1 '-------------------------------------------------', 0091 1 '-----------------------', / ) 0092 c 0093 20 Format ( I4, '. ', 6X, A8, 6X, F6.2, 6X, F5.2, 6X, L3, 6X, F9.2 ) 0094 c 0095 End MANAGER_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 33 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 292 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 263 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 112 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1195 ENTRY POINTS Address Type Name 0-00000000 MANAGER_DISPLAY VARIABLES Address Type Name Address Type Name 2-00000000 CHAR CR 2-00000002 CHAR FF ** I*4 I 2-00000001 CHAR LF 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS ** CHAR NULL 2-00000003 CHAR OPTION AP-00000004@ L*1 SCREEN ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) LABELS Address Label Address Label Address Label 1-00000018 5' 1-0000001C 10' 1-000000CF 20' MANAGER_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 34 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 35 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 36 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine One_Full_Display ( String, Key ) 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Character String*(*) 0091 c 0092 Integer Get_Integer, Start, Finish 0093 Integer Key 0094 c 0095 Logical*1 Screen 0096 c 0097 Common / Block_1 / Screen 0098 c 0099 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0100 Character*1 Null / 0 /, Option 0101 c 0102 If ( Get_Integer ( Number, 15, 1, 1, Manager_Num_Tests, 0103 1 'Enter the number of scores to be displayed' ) ) Then 0104 c 0105 If ( Screen ) Then 0106 Call Lib$Erase_Page ( 6, 1 ) 0107 Call Lib$Set_Scroll ( 11, 24 ) 0108 Call Lib$Set_Cursor ( 1, 1 ) 0109 End If 0110 c 0111 If ( .not. Screen ) Write ( 2, 60 ) FF 0112 c 0113 II = Index ( Last_Name, ' ' ) - 1 0114 If ( II .le. 0 ) II = 20 0115 JJ = Index ( First_Name, ' ' ) - 1 0116 If ( JJ .le. 0 ) JJ = 20 0117 KK = Index ( Student_Number, ' ' ) - 1 0118 If ( KK .le. 0 ) KK = 20 0119 LL = Index ( Department_Name, ' ' ) - 1 0120 If ( LL .le. 0 ) LL = 20 0121 c 0122 Write ( 2, 10 ) First_Name( : JJ ), 0123 1 Last_Name( : II ), 0124 1 Student_Number( : KK ), 0125 1 Department_Name( : LL ), 0126 1 Comment 0127 Write ( 2, 20 ) 0128 Write ( 2, 30 ) ( ( Test_Score( I ), 0129 1 Manager_Scale( I ), 0130 1 Manager_Weights( I ), 0131 1 Test_Comments( I ), 0132 1 Manager_Score_Average( I ), 0133 1 Test_Dropped( I ) ), 0134 1 I = 1, Number ) 0135 Write ( 2, 40 ) 0136 c 0137 If ( Letter_Grade .eq. Null ) Letter_Grade = 'F' 0138 c 0139 Write ( 2, 50 ) Average_Grade, 0140 1 Letter_Grade, ONE_FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 37 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 1 ( Average_Needed ( I ), I = 1, 3 ) 0142 c 0143 End If 0144 c 0145 If ( Screen ) Then 0146 Call Lib$Put_Screen ( Cr // Lf // Lf // 0147 1 ' Hit to continue ', , , 2 ) 0148 Call Lib$Get_Screen ( Option, , ) 0149 Call Lib$Set_Scroll ( 1, 24 ) 0150 End If 0151 c 0152 Call Lib$Erase_Page ( 6, 1 ) 0153 c 0154 Return 0155 c 0156 10 Format ( /////, 0157 1 'Student: ', A, ' ', A, T57, A, /, 0158 1 'Department: ', A, T57, A ) 0159 20 Format ( /, 0160 1 T4, 'Score', T15, 'Scale', T25, 'Weight', T34, 'Comment', 0161 1 T54, 'Class Average', T70, 'Dropped', /, 0162 1 76( '-' ) ) 0163 30 Format ( ( F8.2, T12, F8.2, T23, F8.2, T34, A, T55, F8.2, 0164 1 T73, L1, / ) ) 0165 40 Format ( ' Average Letter', 0166 1 ' Average needed for remaining scores to make:', / 0167 1 ' Score Grade', T39, 'A', TR12, 'B', 0168 1 TR12, 'C' ) 0169 50 Format ( F10.2, T22, A, T34, F8.2, TR5, F8.2, TR5, F8.2 ) 0170 60 Format ( 4(' ', / ), A ) 0171 c 0172 End ONE_FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 38 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 655 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 409 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 292 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG 5 BLOCK_1 1 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 2505 ENTRY POINTS Address Type Name 0-00000000 ONE_FULL_DISPLAY VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000001 CHAR CR 3-0000003C CHAR DEPARTMENT_NAME 2-00000000 CHAR FF ** I*4 FINISH 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 II ** I*4 JJ AP-00000008@ I*4 KEY ** I*4 KK 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-00000002 CHAR LF ** I*4 LL 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-00000003 CHAR NULL 2-00000008 I*4 NUMBER 2-00000004 CHAR OPTION 5-00000000 L*1 SCREEN ** I*4 START AP-00000004@ CHAR STRING 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) ONE_FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 39 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-00000046 10' 1-00000075 20' 1-000000C3 30' 1-000000E6 40' 1-0000015E 50' 1-00000174 60' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 GET_INTEGER LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 40 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 41 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Full_Display ( Screen, Key ) 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Integer Get_Integer, Start, Finish 0091 Integer Key 0092 c 0093 Logical*1 Screen 0094 c 0095 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0096 Character*1 Null / 0 /, Option 0097 c 0098 If ( Get_Integer ( Number, 10, 1, 1, Manager_Num_Tests, 0099 1 'Enter the number of scores to be displayed' ) ) Then 0100 0101 c 0102 New_Page = 60 / ( Number + 14 ) 0103 Line_Count = New_Page 0104 c 0105 Read ( Data_File_Lun, 0106 1 KeyGt = Null, 0107 1 KeyId = Key, 0108 1 IoStat = Ios ) Student_Record 0109 c 0110 If ( Screen ) Then 0111 Call Lib$Erase_Page ( 6, 1 ) 0112 Call Lib$Set_Scroll ( 8, 24 ) 0113 Call Lib$Set_Cursor ( 6, 1 ) 0114 Else 0115 Write ( 2, 70 ) FF 0116 End If 0117 c 0118 Do While ( Ios .eq. 0 ) 0119 c 0120 Line_Count = Line_Count + 1 0121 c 0122 If ( ( .not. Screen ) .and. 0123 1 ( Line_Count .gt. New_Page ) ) Then 0124 Write ( 2, 60 ) FF 0125 Line_Count = 1 0126 End If 0127 c 0128 II = Index ( Last_Name, ' ' ) - 1 0129 If ( II .le. 0 ) II = 20 0130 JJ = Index ( First_Name, ' ' ) - 1 0131 If ( JJ .le. 0 ) JJ = 20 0132 KK = Index ( Student_Number, ' ' ) - 1 0133 If ( KK .le. 0 ) KK = 20 0134 LL = Index ( Department_Name, ' ' ) - 1 0135 If ( LL .le. 0 ) LL = 20 0136 c 0137 Write ( 2, 10 ) First_Name( : JJ ), 0138 1 Last_Name( : II ), 0139 1 Student_Number( : KK ), 0140 1 Department_Name( : LL ), FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 42 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 1 Comment 0142 Write ( 2, 20 ) 0143 Write ( 2, 30 ) ( ( Test_Score( I ), 0144 1 Manager_Scale( I ), 0145 1 Manager_Weights( I ), 0146 1 Test_Comments( I ), 0147 1 Manager_Score_Average( I ), 0148 1 Test_Dropped( I ) ), 0149 1 I = 1, Number ) 0150 Write ( 2, 40 ) 0151 c 0152 If ( Letter_Grade .eq. Null ) Letter_Grade = 'F' 0153 c 0154 Write ( 2, 50 ) Average_Grade, 0155 1 Letter_Grade, 0156 1 ( Average_Needed ( I ), I = 1, 3 ) 0157 c 0158 Read ( Data_File_Lun, 0159 1 IoStat = Ios ) Student_Record 0160 c 0161 End Do 0162 c 0163 End If 0164 c 0165 If ( Screen ) Then 0166 Call Lib$Put_Screen ( Cr // Lf // Lf // 0167 1 ' Hit to continue ', , , 2 ) 0168 Call Lib$Get_Screen ( Option, , ) 0169 Call Lib$Set_Scroll ( 1, 24 ) 0170 End If 0171 c 0172 Return 0173 c 0174 10 Format ( /////, 0175 1 'Student: ', A, ' ', A, T57, A, /, 0176 1 'Department: ', A, T57, A ) 0177 20 Format ( /, 0178 1 T4, 'Score', T15, 'Scale', T25, 'Weight', T34, 'Comment', 0179 1 T54, 'Class Average', T70, 'Dropped', /, 0180 1 76( '-' ) ) 0181 30 Format ( ( F8.2, T12, F8.2, T23, F8.2, T34, A, T55, F8.2, 0182 1 T73, L1, / ) ) 0183 40 Format ( ' Average Letter', 0184 1 ' Average needed for remaining scores to make:', / 0185 1 ' Score Grade', T39, 'A', TR12, 'B', 0186 1 TR12, 'C' ) 0187 50 Format ( F10.2, T22, A, T34, F8.2, TR5, F8.2, TR5, F8.2 ) 0188 60 Format ( A ) 0189 70 Format ( 4(' ', / ), A ) 0190 c 0191 End FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 43 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 776 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 411 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 296 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 2631 ENTRY POINTS Address Type Name 0-00000000 FULL_DISPLAY VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000001 CHAR CR 3-0000003C CHAR DEPARTMENT_NAME 2-00000000 CHAR FF ** I*4 FINISH 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 II ** I*4 IOS ** I*4 JJ AP-00000008@ I*4 KEY ** I*4 KK 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-00000002 CHAR LF ** I*4 LINE_COUNT ** I*4 LL 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS ** I*4 NEW_PAGE 2-00000003 CHAR NULL 2-00000008 I*4 NUMBER 2-00000004 CHAR OPTION AP-00000004@ L*1 SCREEN ** I*4 START 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FULL_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 44 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-00000046 10' 1-00000075 20' 1-000000C3 30' 1-000000E6 40' 1-0000015E 50' 1-00000174 60' 1-00000176 70' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 GET_INTEGER LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 45 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 46 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Brief_Display ( Screen, Key ) 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Integer Get_Integer, Start, Finish, Key 0091 c 0092 Logical*1 Screen 0093 c 0094 Character*22 Ident 0095 Character*1 Null / 0 / 0096 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0097 Character*1 Option, Aster( Maximum_Tests ) 0098 c 0099 If ( ( ( Get_Integer ( Start, 10, 1, 1, Manager_Num_Tests, 0100 1 'Enter the first score to be displayed' ) ) .and. 0101 1 ( Get_Integer ( Finish, 11, 1, Start, 0102 1 Min ( Manager_Num_Tests, Start + 4 ), 0103 1 'Enter the last score to be displayed' ) ) ) ) Then 0104 c 0105 Number = Finish - Start + 1 0106 c 0107 Line_length = ( 34 + ( 9 * Number ) ) 0108 c 0109 Read ( Data_File_Lun, 0110 1 KeyGt = Null, 0111 1 KeyId = Key, 0112 1 IoStat = Ios ) Student_Record 0113 c 0114 If ( Screen ) Then 0115 Call Lib$Erase_Page ( 6, 1 ) 0116 Call Lib$Set_Scroll ( 9, 24 ) 0117 Call Lib$Set_Cursor ( 6, 1 ) 0118 Write ( 2, 10 ) Null, ( Manager_Test_Name( I ), 0119 1 I = Start, Finish ) 0120 Write ( 2, 20 ) ( Manager_Weights( I ), I = Start, Finish ) 0121 Write ( 2, 40 ) Cr // Lf 0122 End If 0123 c 0124 Line_Number = -1 0125 c 0126 Do While ( Ios .eq. 0 ) 0127 c 0128 If ( ( .not. Screen ) .and. ( Line_Number .ge. 54 ) ) Then 0129 Write ( 2, 60 ) 0130 Write ( 2, 10 ) FF, ( Manager_Test_Name( I ), 0131 1 I = Start, Finish ) 0132 Write ( 2, 20 ) ( Manager_Weights( I ), 0133 1 I = Start, Finish ) 0134 Write ( 2, 40 ) Cr // Lf 0135 Line_Number = 0 0136 Else If ( ( .not. Screen ) .and. ( Line_Number .lt. 0 ) ) Then 0137 Write ( 2, 10 ) FF, ( Manager_Test_Name( I ), 0138 1 I = Start, Finish ) 0139 Write ( 2, 20 ) ( Manager_Weights( I ), 0140 1 I = Start, Finish ) BRIEF_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 47 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 Write ( 2, 40 ) Cr // Lf 0142 Line_Number = 0 0143 End If 0144 c 0145 Line_Number = Line_Number + 1 0146 c 0147 If ( Key .eq. 0 ) Then 0148 II = Index ( Last_Name, ' ' ) - 1 0149 If ( II .le. 0 ) II = 20 0150 JJ = Index ( First_Name, ' ' ) - 1 0151 If ( JJ .le. 0 ) JJ = 20 0152 If ( ( II + JJ ) .gt. 20 ) JJ = 20 - II 0153 Ident = Last_Name( : II ) // ', ' // First_Name( : JJ ) 0154 Ident_Size = Min ( 22, II + JJ + 2 ) 0155 Else If ( Key .eq. 1 ) Then 0156 Ident = Student_Number // ' ' 0157 Ident_Size = 22 0158 Else If ( Key .eq. 2 ) Then 0159 Ident = Department_Name // ' ' 0160 Ident_Size = 22 0161 End If 0162 c 0163 Do K = Start, Finish 0164 If ( Test_Dropped( K ) ) Then 0165 Aster( K ) = '*' 0166 Else 0167 Aster( K ) = ' ' 0168 End If 0169 End Do 0170 c 0171 Write ( 2, 30 ) Ident( : Ident_Size ), 0172 1 ( ( Test_Score( K ) + Manager_Scale( K ), 0173 1 Aster( K ) ), K = Start, Finish ), 0174 1 Average_Grade, Letter_Grade, Cr 0175 c 0176 Read ( Data_File_Lun, 0177 1 IoStat = Ios ) Student_Record 0178 c 0179 End Do 0180 c 0181 If ( ( Screen ) .or. ( Line_Number .Lt. 48 ) ) Then 0182 Ident_Size = 15 0183 Write ( 2, 30 ) 'CLASS AVERAGES:', 0184 1 ( ( Manager_Score_Average( K ), ' ' ), 0185 1 K = Start, Finish ), 0186 1 Manager_Average_Grade, ' ', Cr // Lf 0187 c 0188 Write ( 2, 60 ) 0189 Write ( 2, 50 ) Null, Manager_Average_Grade, 0190 1 ( Manager_Counts( I ), I = 1, 5 ) 0191 Else 0192 Ident_Size = 15 0193 Write ( 2, 30 ) 'CLASS AVERAGES:', 0194 1 ( ( Manager_Score_Average( K ), ' ' ), 0195 1 K = Start, Finish ), 0196 1 Manager_Average_Grade, ' ', Cr // Lf 0197 Write ( 2, 60 ) BRIEF_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 48 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0198 Write ( 2, 50 ) FF, Manager_Average_Grade, 0199 1 ( Manager_Counts( I ), I = 1, 5 ) 0200 End If 0201 c 0202 If ( Screen ) Then 0203 Call Lib$Put_Screen ( Cr // Lf // Lf // 0204 1 ' Hit to continue ', , , 2 ) 0205 Call Lib$Get_Screen ( Option, , ) 0206 Call Lib$Set_Scroll ( 1, 24 ) 0207 End If 0208 c 0209 End If 0210 c 0211 Return 0212 c 0213 10 Format ( A, 'Student ', 0214 1 ( A8, ' ' ), ' Grade' ) 0215 20 Format ( 25X, ( 'W:', F6.2, ' ' ), ' Average' ) 0216 30 Format ( A, <24 - Ident_Size>X, (F8.2, A1), F8.2, X, A, A ) 0217 40 Format ( ( '-' ), A ) 0218 50 Format ( ///, A,'Class average: ', F10.2, //, 0219 1 ' Grade # of students', /, 0220 1 ' A ', I7, /, 0221 1 ' B ', I7, /, 0222 1 ' C ', I7, /, 0223 1 ' D ', I7, /, 0224 1 ' F ', I7 ) 0225 60 Format ( '_______________________', //, 0226 1 ' * This score dropped.' ) 0227 c 0228 End BRIEF_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 49 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1785 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 483 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 352 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 3768 ENTRY POINTS Address Type Name 0-00000000 BRIEF_DISPLAY VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-0000002C CHAR CR 3-0000003C CHAR DEPARTMENT_NAME 2-0000002B CHAR FF 2-00000034 I*4 FINISH 3-00000014 CHAR FIRST_NAME ** I*4 I 2-00000014 CHAR IDENT 2-00000044 I*4 IDENT_SIZE ** I*4 II ** I*4 IOS ** I*4 JJ ** I*4 K AP-00000008@ I*4 KEY 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-0000002D CHAR LF 2-0000003C I*4 LINE_LENGTH 2-00000040 I*4 LINE_NUMBER 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-0000002A CHAR NULL 2-00000038 I*4 NUMBER 2-0000002E CHAR OPTION AP-00000004@ L*1 SCREEN 2-00000030 I*4 START 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 2-00000000 CHAR ASTER 20 (20) 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) BRIEF_DISPLAY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 50 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-0000007A 10' 1-000000AE 20' 1-000000CE 30' 1-000000EA 40' 1-000000F7 50' 1-00000195 60' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 GET_INTEGER LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 51 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 52 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Student_Roster ( Screen, Key ) 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Integer Key, Student_Count, Page_Number 0091 c 0092 Logical*1 Screen 0093 c 0094 Character*40 Full_Name 0095 Character*15 Key_Name 0096 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0097 Character*1 Null / 0 /, Option 0098 c 0099 Student_Count = 0 0100 c 0101 If ( Key .eq. 0 ) Then 0102 Key_Name = 'Student Name' 0103 LL = 12 0104 Else If ( Key .eq. 1 ) Then 0105 Key_Name = 'Student Number' 0106 LL = 14 0107 Else 0108 Key_Name = 'Department Name' 0109 LL = 15 0110 End If 0111 c 0112 Read ( Data_File_Lun, 0113 1 KeyGt = Null, 0114 1 KeyId = Key, 0115 1 IoStat = Ios ) Student_Record 0116 c 0117 Page_Number = 1 0118 c 0119 If ( Screen ) Then 0120 Call Lib$Erase_Page ( 6, 1 ) 0121 Call Lib$Set_Scroll ( 9, 24 ) 0122 Call Lib$Set_Cursor ( 7, 1 ) 0123 Else 0124 Write ( 2, 10 ) FF, Page_Number, Key_Name( : LL ) 0125 End If 0126 c 0127 Write ( 2, 15 ) 0128 Write ( 2, 20 ) Cr // Lf 0129 c 0130 Line_Number = -1 0131 c 0132 Do While ( Ios .eq. 0 ) 0133 c 0134 If ( ( .not. Screen ) .and. ( Line_Number .ge. 54 ) ) Then 0135 Line_Number = 0 0136 Page_Number = Page_Number + 1 0137 Write ( 2, 10 ) FF, Page_Number, Key_Name( : LL ) 0138 Write ( 2, 15 ) 0139 Write ( 2, 20 ) Cr // Lf 0140 End If STUDENT_ROSTER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 53 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 c 0142 Line_Number = Line_Number + 1 0143 Student_Count = Student_Count + 1 0144 c 0145 II = Index( Last_Name, ' ' ) - 1 0146 JJ = Index( First_Name, ' ' ) - 1 0147 If ( II .lt. 1 ) II = 20 0148 If ( JJ .lt. 1 ) JJ = 20 0149 Full_Name = Last_Name( : II ) // ', ' // First_Name( : JJ ) 0150 KK = JJ + II + 2 0151 If ( KK .gt. 30 ) KK = 30 0152 c 0153 Write ( 2, 30 ) Student_Count, Full_Name( : KK ), 0154 1 Student_Number, Department_Name 0155 c 0156 Read ( Data_File_Lun, 0157 1 IoStat = Ios ) Student_Record 0158 c 0159 End Do 0160 c 0161 If ( Screen ) Then 0162 Call Lib$Put_Screen ( Cr // Lf // Lf // 0163 1 ' Hit to continue ', , , 2 ) 0164 Call Lib$Get_Screen ( Option, , ) 0165 Call Lib$Set_Scroll ( 1, 24 ) 0166 End If 0167 c 0168 Return 0169 c 0170 10 Format ( A, /, T33, 'Student Roster', T69, 'Page', I3, /, 0171 1 T<(80-(LL+10))/2>, 'Sorted By ', A ) 0172 0173 15 Format ( T6, 'Student Name', T37, 'Student Number', 0174 1 T58, 'Department Name' ) 0175 20 Format ( 75( '-' ), A ) 0176 30 Format ( I3, '. ', A, T37, A, T58, A ) 0177 c 0178 End STUDENT_ROSTER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 54 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 767 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 223 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 272 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 2410 ENTRY POINTS Address Type Name 0-00000000 STUDENT_ROSTER VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000038 CHAR CR 3-0000003C CHAR DEPARTMENT_NAME 2-00000037 CHAR FF 3-00000014 CHAR FIRST_NAME 2-00000000 CHAR FULL_NAME ** I*4 II 2-00000048 I*4 IOS ** I*4 JJ AP-00000008@ I*4 KEY 2-00000028 CHAR KEY_NAME ** I*4 KK 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-00000039 CHAR LF ** I*4 LINE_NUMBER 2-00000044 I*4 LL 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-0000003A CHAR NULL 2-0000003B CHAR OPTION 2-00000040 I*4 PAGE_NUMBER AP-00000004@ L*1 SCREEN 2-0000003C I*4 STUDENT_COUNT 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) STUDENT_ROSTER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 55 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 LABELS Address Label Address Label Address Label Address Label 1-0000001B 10' 1-0000004E 15' 1-00000084 20' 1-0000008E 30' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR LIB$SET_SCROLL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 56 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 57 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Manager_Menu 0004 c 0005 Parameter Maximum_Tests = 20 0006 c 0007 Include 'Manager.Rec' 0050 c 0051 Character*1 Option 0052 c 0053 Logical*1 Done 0054 c 0055 Done = .False. 0056 c 0057 If ( Manager_Num_Tests .lt. 1 ) Call Change_Test_Count( 8 ) 0058 c 0059 Do While ( .Not. Done ) 0060 c 0061 Call Draw_Manager_Menu 0062 c 0063 Length = 1 0064 Option = '?' 0065 c 0066 Call Select_Option ( 'ABCLN', Option, Length, 21, 33, 1 ) 0067 c 0068 If ( Length .le. 0 ) Then 0069 Done = .True. 0070 Else If ( Option .eq. 'A' ) Then 0071 Call Add_Test_Weights 0072 Else If ( Option .eq. 'B' ) Then 0073 Call Build_Flat_File 0074 Else If ( Option .eq. 'C' ) Then 0075 Call Modify_Test_Weights 0076 Else If ( Option .eq. 'L' ) Then 0077 Call Load_Flat_File 0078 Else If ( Option .eq. 'N' ) Then 0079 Call Change_Test_Count( 7 ) 0080 End If 0081 c 0082 End Do 0083 c 0084 Return 0085 End MANAGER_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 58 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 149 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 26 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 68 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 771 ENTRY POINTS Address Type Name 0-00000000 MANAGER_MENU VARIABLES Address Type Name Address Type Name ** L*1 DONE 2-00000004 I*4 LENGTH 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS 2-00000000 CHAR OPTION ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ADD_TEST_WEIGHTS BUILD_FLAT_FILE CHANGE_TEST_COUNT DRAW_MANAGER_MENU LOAD_FLAT_FILE MODIFY_TEST_WEIGHTS SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 59 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 60 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Load_Flat_File 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Logical*1 Screen 0091 c 0092 Character*80 File_Name 0093 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0094 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0095 Character*1 Option 0096 c 0097 Call Lib$Erase_Page ( 8, 1 ) 0098 Call Lib$Put_Screen ( So // 'm' // Si, 7, 21, 1 ) 0099 Call Lib$Put_Screen ( So // 'j' // Si, 7, 60, 1 ) 0100 c 0101 Call Lib$Put_Screen ( 'Enter input specification: ', 9, 1, 1 ) 0102 Call Lib$Get_Screen ( File_Name, , Length ) 0103 Call Str$UpCase ( File_Name( : Length ), File_Name( : Length ) ) 0104 c 0105 If ( ( File_Name ( : 9 ) .eq. 'SYS$INPUT' ) .or. 0106 1 ( File_Name ( : 3 ) .eq. 'TT:' ) ) Then 0107 Screen = .True. 0108 Else 0109 Screen = .False. 0110 End If 0111 c 0112 Call Lib$Erase_Page ( 8, 1 ) 0113 Call Lib$Set_Scroll ( 10, 24 ) 0114 Call Lib$Put_Screen ( 0115 1 ' Loading student database from the flat file... ', 0116 1 9, 16, 2 ) 0117 c 0118 Open ( Unit = 2, 0119 1 Name = File_Name( : Length ), 0120 1 DefaultFile = 'Flat.Dat', 0121 1 Status = 'OLD', 0122 1 Access = 'Sequential', 0123 1 Organization = 'Sequential', 0124 1 Form = 'Formatted', 0125 1 Err = 100, 0126 1 CarriageControl = 'LIST' ) 0127 c 0128 Read ( Data_File_Lun, 0129 1 Key = Null, 0130 1 KeyId = 0, 0131 1 IoStat = Ios ) Manager_Record 0132 c 0133 Read ( 2, 10, End = 200 ) Option 0134 Read ( 2, 11 ) ( Manager_Counts( I ), I = 1, 5 ), Manager_Num_Tests, 0135 1 Manager_Average_Grade 0136 Read ( 2, 12 ) ( Manager_Dropped( I ), I = 1, Maximum_Tests ) 0137 Read ( 2, 13 ) ( Manager_Weights( I ), I = 1, Maximum_Tests ) 0138 Read ( 2, 13 ) ( Manager_Scale( I ), I = 1, Maximum_Tests ) 0139 Read ( 2, 13 ) ( Manager_Score_Average( I ), I = 1, Maximum_Tests ) 0140 Read ( 2, 14, LOAD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 61 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 1IoStat = Jos ) ( Manager_Test_Name( I ), I = 1, Maximum_Tests ) 0142 c 0143 Rewrite ( Data_File_Lun, IoStat = Ios ) Manager_Record 0144 c 0145 Do While ( Jos .eq. 0 ) 0146 c 0147 Read ( 2, 20, End = 300 ) Last_Name, First_Name, 0148 1 Student_Number, 0149 1 Department_Name 0150 Read ( 2, 20 ) ( Test_Comments( I ), I = 1, Maximum_Tests ) 0151 Read ( 2, 21 ) Comment, Letter_Grade 0152 Read ( 2, 22 ) ( Test_Dropped( I ), I = 1, Maximum_Tests ) 0153 Read ( 2, 23 ) ( Test_Score( I ), I = 1, Maximum_Tests ) 0154 Read ( 2, 24, IoStat = Jos ) Average_Grade, 0155 1 ( Average_Needed( I ), I = 1, 3 ) 0156 c 0157 Write ( Data_File_Lun, 0158 1 IoStat = Ios ) Student_Record 0159 c 0160 If ( Ios .ne. 0 ) Then 0161 Call Lib$Erase_Page ( 18, 1 ) 0162 Call Lib$Put_Screen ( '%GRADE-E-ADDERR, error adding ', 0163 1 18, 1, 1 ) 0164 Call Display_Current_Record ( 18, 31 ) 0165 Call Lib$Put_Screen ( ' Continue? ', 21, 34, 2 ) 0166 Call Lib$Get_Screen ( Option, , ) 0167 If ( ( Option .ne. 'Y' ) .and. ( Option .ne. 'y' ) ) Jos = -1 0168 End If 0169 c 0170 End Do 0171 c 0172 Close ( Unit = 2 ) 0173 c 0174 Call Lib$Set_Scroll ( 1, 24 ) 0175 c 0176 Return 0177 c 0178 100 Call Lib$Erase_Page ( 18, 1 ) 0179 Call Lib$Put_Screen ( '%GRADE-F-FNF, file not found', 0180 1 18, 1, 1 ) 0181 Call Lib$Put_Screen ( ' Hit to continue ', 20, 1, 2 ) 0182 Call Lib$Get_Screen ( Option, , ) 0183 Call Lib$Set_Scroll ( 1, 24 ) 0184 Return 0185 c 0186 200 Call Lib$Erase_Page ( 18, 1 ) 0187 Call Lib$Put_Screen ( '%GRADE-E-FLEMPTY, student flat file is empty', 0188 1 18, 1, 1 ) 0189 Call Lib$Put_Screen ( ' Hit to continue ', 20, 1, 2 ) 0190 Call Lib$Get_Screen ( Option, , ) 0191 Call Lib$Set_Scroll ( 1, 24 ) 0192 Close ( Unit = 2 ) 0193 Return 0194 c 0195 300 Close ( Unit = 2 ) 0196 Call Lib$Set_Scroll ( 1, 24 ) 0197 Return LOAD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 62 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0198 c 0199 10 Format ( A ) 0200 11 Format ( 6I10, F10.3 ) 0201 12 Format ( L3 ) 0202 13 Format ( 5F10.3 ) 0203 14 Format ( 10A8 ) 0204 c 0205 20 Format ( 4A20 ) 0206 21 Format ( A20, A1 ) 0207 22 Format ( L3 ) 0208 23 Format ( 5F10.3 ) 0209 24 Format ( 4F10.3 ) 0210 c 0211 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1222 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 351 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 636 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 3357 ENTRY POINTS Address Type Name 0-00000000 LOAD_FLAT_FILE VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT ** CHAR CR 3-0000003C CHAR DEPARTMENT_NAME ** CHAR FF 2-00000000 CHAR FILE_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 IOS ** I*4 JOS 3-00000000 CHAR LAST_NAME 2-00000054 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE ** CHAR LF 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-00000052 CHAR NULL 2-00000053 CHAR OPTION ** L*1 SCREEN 2-00000051 CHAR SI 2-00000050 CHAR SO 3-00000028 CHAR STUDENT_NUMBER LOAD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 63 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-0000011E 10' 1-00000120 11' 1-00000128 12' 1-0000012D 13' 1-00000133 14' 1-00000138 20' 1-0000013D 21' 1-00000142 22' 1-00000147 23' 1-0000014D 24' 0-00000498 100 0-00000460 200 0-00000438 300 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD FOR$CLOSE FOR$OPEN LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_SCROLL STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 64 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 65 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Build_Flat_File 0004 c 0005 Include 'Student.Rec' 0046 Include 'Manager.Rec' 0089 c 0090 Logical*1 Screen 0091 c 0092 Character*80 File_Name 0093 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0094 Character*1 FF / 12 /, Cr / 13 /, Lf / 10 / 0095 Character*1 Option 0096 c 0097 Call Lib$Erase_Page ( 8, 1 ) 0098 Call Lib$Put_Screen ( So // 'm' // Si, 7, 21, 1 ) 0099 Call Lib$Put_Screen ( So // 'j' // Si, 7, 60, 1 ) 0100 c 0101 Call Lib$Put_Screen ( 'Enter output specification: ', 9, 1, 1 ) 0102 Call Lib$Get_Screen ( File_Name, , Length ) 0103 Call Str$UpCase ( File_Name( : Length ), File_Name( : Length ) ) 0104 c 0105 If ( ( File_Name ( : 10 ) .eq. 'SYS$OUTPUT' ) .or. 0106 1 ( File_Name ( : 3 ) .eq. 'TT:' ) ) Then 0107 Screen = .True. 0108 Else 0109 Screen = .False. 0110 End If 0111 c 0112 Call Lib$Erase_Page ( 8, 1 ) 0113 Call Lib$Set_Scroll ( 10, 24 ) 0114 Call Lib$Put_Screen ( ' Putting student database into a flat file... ', 0115 1 9, 17, 2 ) 0116 c 0117 Open ( Unit = 2, 0118 1 Name = File_Name( : Length ), 0119 1 DefaultFile = 'Flat.Dat', 0120 1 Status = 'NEW', 0121 1 Access = 'Sequential', 0122 1 Organization = 'Sequential', 0123 1 Form = 'Formatted', 0124 1 Recl = 80, 0125 1 CarriageControl = 'LIST' ) 0126 c 0127 Read ( Data_File_Lun, 0128 1 Key = Null, 0129 1 KeyId = 0, 0130 1 IoStat = Ios ) Manager_Record 0131 c 0132 Write ( 2, 10 ) 0133 Write ( 2, 11 ) ( Manager_Counts( I ), I = 1, 5 ), Manager_Num_Tests, 0134 1 Manager_Average_Grade 0135 Write ( 2, 12 ) ( Manager_Dropped( I ), I = 1, Maximum_Tests ) 0136 Write ( 2, 13 ) ( Manager_Weights( I ), I = 1, Maximum_Tests ) 0137 Write ( 2, 13 ) ( Manager_Scale( I ), I = 1, Maximum_Tests ) 0138 Write ( 2, 13 ) ( Manager_Score_Average( I ), I = 1, Maximum_Tests ) 0139 Write ( 2, 14 ) ( Manager_Test_Name( I ), I = 1, Maximum_Tests ) 0140 c BUILD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 66 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0141 Read ( Data_File_Lun, 0142 1 IoStat = Ios ) Student_Record 0143 c 0144 Do While ( Ios .eq. 0 ) 0145 c 0146 Write ( 2, 20 ) Last_Name, First_Name, Student_Number, 0147 1 Department_Name 0148 Write ( 2, 20 ) ( Test_Comments( I ), I = 1, Maximum_Tests ) 0149 Write ( 2, 21 ) Comment, Letter_Grade 0150 Write ( 2, 22 ) ( Test_Dropped( I ), I = 1, Maximum_Tests ) 0151 Write ( 2, 23 ) ( Test_Score( I ), I = 1, Maximum_Tests ) 0152 Write ( 2, 24 ) Average_Grade, ( Average_Needed( I ), I = 1, 3 ) 0153 c 0154 Read ( Data_File_Lun, 0155 1 IoStat = Ios ) Student_Record 0156 c 0157 End Do 0158 c 0159 Close ( Unit = 2 ) 0160 c 0161 If ( Screen ) Then 0162 Call Lib$Put_Screen ( Cr // Lf // Lf // 0163 1 ' Hit to continue ', , , 2 ) 0164 Call Lib$Get_Screen ( Option, , ) 0165 End If 0166 c 0167 Call Lib$Set_Scroll ( 1, 24 ) 0168 c 0169 Return 0170 c 0171 10 Format ( '****** File Management Record (Keys are all NULL) ******' ) 0172 11 Format ( 6I10, F10.3 ) 0173 12 Format ( L3 ) 0174 13 Format ( 5F10.3 ) 0175 14 Format ( 10A8 ) 0176 c 0177 20 Format ( 4A20 ) 0178 21 Format ( A20, A1 ) 0179 22 Format ( L3 ) 0180 23 Format ( 5F10.3 ) 0181 24 Format ( 4F10.3 ) 0182 c 0183 End BUILD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 67 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1065 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 274 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 476 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG 4 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 2963 ENTRY POINTS Address Type Name 0-00000000 BUILD_FLAT_FILE VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000053 CHAR CR 3-0000003C CHAR DEPARTMENT_NAME ** CHAR FF 2-00000000 CHAR FILE_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 IOS 3-00000000 CHAR LAST_NAME 2-00000058 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000054 CHAR LF 4-000000C8 R*4 MANAGER_AVERAGE_GRADE 4-00000000 CHAR MANAGER_KEY_0 4-00000028 CHAR MANAGER_KEY_1 4-0000003C CHAR MANAGER_KEY_2 4-000000CC I*4 MANAGER_NUM_TESTS 2-00000052 CHAR NULL 2-00000055 CHAR OPTION ** L*1 SCREEN 2-00000051 CHAR SI 2-00000050 CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 4-000000B4 I*4 MANAGER_COUNTS 20 (5) 4-00000050 L*1 MANAGER_DROPPED 20 (20) 4-00000000 L*1 MANAGER_RECORD 508 (508) 4-000000D0 R*4 MANAGER_SCALE 80 (20) 4-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 4-00000170 CHAR MANAGER_TEST_NAME 160 (20) 4-00000064 R*4 MANAGER_WEIGHTS 80 (20) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) BUILD_FLAT_FILE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 68 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-0000007D 10' 1-000000B8 11' 1-000000C0 12' 1-000000C5 13' 1-000000CB 14' 1-000000D0 20' 1-000000D5 21' 1-000000DA 22' 1-000000DF 23' 1-000000E5 24' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name FOR$CLOSE FOR$OPEN LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_SCROLL STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 69 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 70 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Add_Test_Weights 0004 c 0005 Parameter Maximum_Tests = 20 0006 Parameter Data_File_Lun = 1 0007 c 0008 Include 'Manager.Rec' 0051 c 0052 Character*1 Null / 0 / 0053 c 0054 Read ( Data_File_Lun, 0055 1 Key = Null, 0056 1 KeyId = 0, 0057 1 IoStat = Ios ) Manager_Record 0058 c 0059 Call Draw_Menu_Header ( 'Add Test Weights', 3 ) 0060 Call Setup_Add_Test_Weights( 13, 16 ) 0061 c 0062 Do I = 1, Manager_Num_Tests 0063 Call Get_Test_Weights( I ) 0064 End Do 0065 c 0066 ReWrite ( Data_File_Lun ) Manager_Record 0067 Return 0068 c 0069 End ADD_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 71 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 119 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 29 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 72 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 748 ENTRY POINTS Address Type Name 0-00000000 ADD_TEST_WEIGHTS VARIABLES Address Type Name Address Type Name 2-00000004 I*4 I ** I*4 IOS 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS 2-00000000 CHAR NULL ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_HEADER GET_TEST_WEIGHTS SETUP_ADD_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 72 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 0002 Subroutine Modify_Test_Weights 0003 c 0004 Parameter Maximum_Tests = 20 0005 Parameter Data_File_Lun = 1 0006 c 0007 Include 'Manager.Rec' 0050 c 0051 Integer Get_Integer 0052 c 0053 Character*1 Null / 0 / 0054 c 0055 Read ( Data_File_Lun, 0056 1 Key = Null, 0057 1 KeyId = 0, 0058 1 IoStat = Ios ) Manager_Record 0059 c 0060 Call Draw_Menu_Header ( 'Modify Test Weights', 3 ) 0061 c 0062 Call Setup_Add_Test_Weights( 13, 16 ) 0063 c 0064 Do While ( Get_Integer ( I, 9, 1, 1, Manager_Num_Tests, 0065 1 'Enter the number of the score to be modified' ) ) 0066 c 0067 Call Get_Test_Weights( I ) 0068 c 0069 End Do 0070 c 0071 ReWrite ( Data_File_Lun ) Manager_Record 0072 Return 0073 c 0074 End MODIFY_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 73 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 115 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 85 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 108 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 836 ENTRY POINTS Address Type Name 0-00000000 MODIFY_TEST_WEIGHTS VARIABLES Address Type Name Address Type Name 2-00000004 I*4 I ** I*4 IOS 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS 2-00000000 CHAR NULL ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_HEADER I*4 GET_INTEGER GET_TEST_WEIGHTS SETUP_ADD_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 74 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 75 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Change_Test_Count ( Row ) 0004 c 0005 Parameter Maximum_Tests = 20 0006 Parameter Data_File_Lun = 1 0007 c 0008 Include 'Manager.Rec' 0051 c 0052 Integer Row, Get_Integer 0053 c 0054 Character*2 Number, Input 0055 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0056 c 0057 Call Lib$Erase_Page ( Row + 1, 1 ) 0058 Call Lib$Put_Screen ( So // 'm' // Si, Row, 21, 1 ) 0059 Call Lib$Put_Screen ( So // 'j' // Si, Row, 60, 1 ) 0060 Call Lib$Put_Screen ( So // 'oo' // Si, Row + 5, 43, 1 ) 0061 c 0062 Write ( Number, 10 ) Manager_Num_Tests 0063 Call Lib$Erase_Line ( Row + 7, 1 ) 0064 Call Lib$Put_Screen ( Number, Row + 7, 43, 2 ) 0065 c 0066 K = Manager_Num_Tests 0067 c 0068 Do While ( Get_Integer ( K, Row + 4, 1, 1, Maximum_Tests, 0069 1 'Enter the total number of tests' ) .or. ( K .le. 0 ) ) 0070 c 0071 Write ( Number, 10 ) K 0072 Call Lib$Erase_Line ( Row + 7, 1 ) 0073 Call Lib$Put_Screen ( Number, Row + 7, 43, 2 ) 0074 0075 End Do 0076 c 0077 Read ( Data_File_Lun, 0078 1 Key = Null, 0079 1 KeyId = 0, 0080 1 IoStat = Ios ) Manager_Record 0081 c 0082 Manager_Num_Tests = K 0083 c 0084 ReWrite ( Data_File_Lun ) Manager_Record 0085 c 0086 Return 0087 c 0088 10 Format ( I2 ) 0089 c 0090 End CHANGE_TEST_COUNT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 76 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 421 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 59 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 180 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1188 ENTRY POINTS Address Type Name 0-00000000 CHANGE_TEST_COUNT VARIABLES Address Type Name Address Type Name ** CHAR INPUT ** I*4 IOS 2-00000008 I*4 K 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS 2-00000004 CHAR NULL 2-00000000 CHAR NUMBER AP-00000004@ I*4 ROW 2-00000003 CHAR SI 2-00000002 CHAR SO ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) LABELS Address Label 1-00000038 10' CHANGE_TEST_COUNT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 77 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 GET_INTEGER LIB$ERASE_LINE LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 78 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 79 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Test_Weights( I ) 0004 c 0005 Parameter Maximum_Tests = 20 0006 Parameter Data_File_Lun = 1 0007 c 0008 Include 'Manager.Rec' 0051 c 0052 Character*10 Current_Weight, Input_Weight 0053 Character*10 Current_Scale, Input_Scale 0054 Character*5 Current_Drop 0055 Character*2 Number 0056 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0057 Character*1 Bell / 7 /, Cr / 13 /, Lf / 10 / 0058 Character*1 Option 0059 c 0060 Write ( Number, 10 ) I 0061 Call Lib$Put_Screen ( 'Score ' // Number, 13, 1, 1 ) 0062 c 0063 Write ( Current_Weight, 20 ) Manager_Weights( I ) 0064 Write ( Current_Scale, 20 ) Manager_Scale( I ) 0065 If ( Manager_Dropped( I ) ) Then 0066 Current_Drop = ' True' 0067 Else 0068 Current_Drop = 'False' 0069 End If 0070 c 0071 Call Lib$Erase_Line ( 17, 1 ) 0072 Call Lib$Put_Screen ( Current_Weight, 17, 11, 2 ) 0073 Call Lib$Put_Screen ( Current_Scale, 17, 31, 2 ) 0074 Call Lib$Put_Screen ( Manager_Test_Name(I), 17, 51, 2 ) 0075 Call Lib$Put_Screen ( Current_Drop, 17, 71, 2 ) 0076 c 0077 Call Lib$Erase_Line ( 15, 1 ) 0078 Call Get_Real ( Manager_Weights( I ), 15, 11 ) 0079 Call Get_Real ( Manager_Scale( I ), 15, 31 ) 0080 Call Get_Test_Name ( Manager_Test_Name( I ), 15, 51 ) 0081 Call Get_Logi ( Manager_Dropped( I ), 15, 71 ) 0082 c 0083 Return 0084 c 0085 10 Format ( I2 ) 0086 20 Format ( F10.2 ) 0087 30 Format ( F10.0 ) 0088 c 0089 End GET_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 80 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 342 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 59 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 264 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1193 ENTRY POINTS Address Type Name 0-00000000 GET_TEST_WEIGHTS VARIABLES Address Type Name Address Type Name ** CHAR BELL ** CHAR CR 2-00000014 CHAR CURRENT_DROP 2-0000000A CHAR CURRENT_SCALE 2-00000000 CHAR CURRENT_WEIGHT AP-00000004@ I*4 I ** CHAR INPUT_SCALE ** CHAR INPUT_WEIGHT ** CHAR LF 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS ** CHAR NULL 2-00000019 CHAR NUMBER ** CHAR OPTION ** CHAR SI ** CHAR SO ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) LABELS Address Label Address Label Address Label 1-00000024 10' 1-00000027 20' ** 30' GET_TEST_WEIGHTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 81 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name GET_LOGI GET_REAL GET_TEST_NAME LIB$ERASE_LINE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 82 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 83 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Test_Name ( Default, Row, Col ) 0004 c 0005 Character*8 Default, Option 0006 c 0007 Integer Row, Col 0008 c 0009 Call Lib$Set_Cursor ( Row, Col ) 0010 Call Get_Option( Option, Length ) 0011 c 0012 If ( Length .gt. 0 ) Default = Option 0013 c 0014 Call Lib$Erase_Line ( Row, Col ) 0015 Call Lib$Put_Screen ( Default, Row, Col, 1 ) 0016 c 0017 Return 0018 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 89 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 4 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 72 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 165 ENTRY POINTS Address Type Name 0-00000000 GET_TEST_NAME VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-0000000C@ I*4 COL AP-00000004@ CHAR DEFAULT 2-00000008 I*4 LENGTH 2-00000000 CHAR OPTION AP-00000008@ I*4 ROW FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name GET_OPTION LIB$ERASE_LINE LIB$PUT_SCREEN LIB$SET_CURSOR 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 84 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 85 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Real ( Value, Row, Col ) 0004 c 0005 Real Value 0006 c 0007 Character*10 String 0008 c 0009 Integer Row, Col 0010 c 0011 Ios = -1 0012 c 0013 Do While ( Ios .ne. 0 ) 0014 c 0015 Call Lib$Set_Cursor ( Row, Col ) 0016 Call Lib$Get_Screen ( String, , Length ) 0017 If ( Length .gt. 0 ) Then 0018 Read ( String( : Length ), 30, IOStat = Ios ) X 0019 Else 0020 Ios = 0 0021 End If 0022 c 0023 End Do 0024 c 0025 If ( Length .gt. 0 ) Then 0026 Value = X 0027 Else 0028 X = Value 0029 End If 0030 c 0031 Write ( String, 20 ) X 0032 Call Lib$Erase_Line ( Row, Col ) 0033 Call Lib$Put_Screen ( String, Row, Col, 1 ) 0034 c 0035 20 Format ( F10.2 ) 0036 30 Format ( F10.0 ) 0037 c 0038 Return 0039 End GET_REAL 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 86 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 191 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 12 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 84 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 287 ENTRY POINTS Address Type Name 0-00000000 GET_REAL VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-0000000C@ I*4 COL ** I*4 IOS 2-0000000C I*4 LENGTH AP-00000008@ I*4 ROW 2-00000000 CHAR STRING AP-00000004@ R*4 VALUE 2-00000010 R*4 X LABELS Address Label Address Label 1-00000004 20' 1-00000008 30' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 87 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 88 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Logi ( Value, Row, Col ) 0004 c 0005 Logical*1 Value, X 0006 c 0007 Character*5 String 0008 Character*1 Option 0009 c 0010 Integer Row, Col 0011 c 0012 Ios = -1 0013 c 0014 Do While ( Ios .ne. 0 ) 0015 c 0016 Call Lib$Set_Cursor ( Row, Col ) 0017 Call Get_Option( Option, Length ) 0018 c 0019 If ( ( Length .gt. 0 ) .and. ( Option .eq. 'T' ) )Then 0020 Value = .True. 0021 String = ' True' 0022 Ios = 0 0023 Else If ( ( Length .gt. 0 ) .and. ( Option .eq. 'F' ) )Then 0024 Value = .False. 0025 String = 'False' 0026 Ios = 0 0027 Else If ( ( Value ) .and. ( Length .lt. 1 ) ) Then 0028 String = ' True' 0029 Ios = 0 0030 Else If ( ( .Not. Value ) .and. ( Length .lt. 1 ) ) Then 0031 String = 'False' 0032 Ios = 0 0033 End If 0034 c 0035 End Do 0036 c 0037 Call Lib$Erase_Line ( Row, Col ) 0038 Call Lib$Put_Screen ( String, Row, Col, 1 ) 0039 c 0040 Return 0041 End GET_LOGI 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 89 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 189 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 14 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 72 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 275 ENTRY POINTS Address Type Name 0-00000000 GET_LOGI VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-0000000C@ I*4 COL ** I*4 IOS 2-00000008 I*4 LENGTH 2-00000005 CHAR OPTION AP-00000008@ I*4 ROW 2-00000000 CHAR STRING AP-00000004@ L*1 VALUE ** L*1 X FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name GET_OPTION LIB$ERASE_LINE LIB$PUT_SCREEN LIB$SET_CURSOR 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 90 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 91 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Setup_Add_Test_Weights ( I, J ) 0004 c 0005 Character*1 So / 14 /, Si / 15 / 0006 c 0007 Call Lib$Put_Screen ( 'Weight', I, 13, 1 ) 0008 Call Lib$Put_Screen ( 'Scale', I, 33, 1 ) 0009 Call Lib$Put_Screen ( 'Name', I, 53, 1 ) 0010 Call Lib$Put_Screen ( 'Droppable', I, 69, 1 ) 0011 c 0012 Call Lib$Put_Screen ( So // 'oooooooooo' // Si, 0013 1 J, 11, 1 ) 0014 Call Lib$Put_Screen ( So // 'oooooooooo' // Si, 0015 1 J, 31, 1 ) 0016 Call Lib$Put_Screen ( So // 'oooooooo' // Si, 0017 1 J, 51, 1 ) 0018 Call Lib$Put_Screen ( So // 'ooooo' // Si, 0019 1 J, 71, 1 ) 0020 c 0021 Return 0022 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 258 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 79 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 204 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 541 ENTRY POINTS Address Type Name 0-00000000 SETUP_ADD_TEST_WEIGHTS VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000004@ I*4 I AP-00000008@ I*4 J 2-00000001 CHAR SI 2-00000000 CHAR SO FUNCTIONS AND SUBROUTINES REFERENCED Type Name LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 92 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 93 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Update_Menu 0004 c 0005 Character*1 Option 0006 c 0007 Logical*1 Done 0008 c 0009 External Delete_Student 0010 0011 Done = .False. 0012 c 0013 Do While ( .Not. Done ) 0014 c 0015 Call Draw_Update_Menu 0016 c 0017 Length = 1 0018 Option = '?' 0019 c 0020 Call Select_Option ( 'ADMR', Option, Length, 19, 33, 1 ) 0021 c 0022 If ( Option .eq. 'A' ) Then 0023 Call Add_Student 0024 Else If ( Option .eq. 'D' ) Then 0025 Call Select_Student_Menu ( 'Delete Menu', 0026 1 'deleted', 0027 1 'Delete Students', 0028 1 Delete_Student ) 0029 Else If ( Option .eq. 'M' ) Then 0030 Call Modify_Student_Menu 0031 Else If ( Option .eq. 'R' ) Then 0032 Done = .False. 0033 Else 0034 Done = .True. 0035 End If 0036 c 0037 End Do 0038 c 0039 Return 0040 End UPDATE_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 94 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 113 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 54 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 96 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 263 ENTRY POINTS Address Type Name 0-00000000 UPDATE_MENU VARIABLES Address Type Name Address Type Name Address Type Name ** L*1 DONE 2-00000004 I*4 LENGTH 2-00000000 CHAR OPTION FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ADD_STUDENT DELETE_STUDENT DRAW_UPDATE_MENU MODIFY_STUDENT_MENU SELECT_OPTION SELECT_STUDENT_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 95 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 96 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Student_Menu 0004 c 0005 Character*1 Option 0006 c 0007 Logical*1 Done 0008 c 0009 Integer Key 0010 c 0011 External Modify_Student 0012 c 0013 Done = .False. 0014 c 0015 Do While ( .Not. Done ) 0016 c 0017 Call Draw_Modify_Menu 0018 c 0019 Length = 1 0020 Option = '?' 0021 c 0022 Call Select_Option ( 'AC', Option, Length, 17, 33, 1 ) 0023 c 0024 If ( Length .le. 0 ) Then 0025 Done = .True. 0026 Else If ( Option .eq. 'A' ) Then 0027 Call Add_Grades 0028 Else If ( Option .eq. 'C' ) Then 0029 Call Draw_Menu_Header ( 'Change Students', 1 ) 0030 Call Select_By_Key ( 0, 'LAST name', 0031 1 'modified', Modify_Student ) 0032 End If 0033 c 0034 End Do 0035 c 0036 Return 0037 End MODIFY_STUDENT_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 97 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 93 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 54 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 108 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 255 ENTRY POINTS Address Type Name 0-00000000 MODIFY_STUDENT_MENU VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*1 DONE ** I*4 KEY 2-00000004 I*4 LENGTH 2-00000000 CHAR OPTION FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ADD_GRADES DRAW_MENU_HEADER DRAW_MODIFY_MENU MODIFY_STUDENT SELECT_BY_KEY SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 98 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 99 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Student ( Key_Value, Key_Number ) 0004 c 0005 Character Key_Value*(*) 0006 Character*1 So / 14 /, Si / 15 /, Option 0007 c 0008 Integer Key_Number 0009 c 0010 Logical*1 Done 0011 c 0012 Done = .False. 0013 c 0014 Do While ( .not. Done ) 0015 c 0016 Call Draw_Modify_Screen 0017 c 0018 Length = 1 0019 Option = '?' 0020 c 0021 Call Select_Option ( 'CDLNST', Option, Length, 21, 33, 1 ) 0022 c 0023 If ( Length .eq. 0 ) then 0024 Done = .True. 0025 Else If ( Option .eq. 'C' ) Then 0026 Call Modify_Student_Comment ( Key_Value, Key_Number ) 0027 Else If ( Option .eq. 'D' ) Then 0028 Call Modify_Department_Name ( Key_Value, Key_Number ) 0029 Else If ( Option .eq. 'L' ) Then 0030 Call Modify_Letter_Grade ( Key_Value, Key_Number ) 0031 Else If ( Option .eq. 'N' ) Then 0032 Call Modify_Student_Number ( Key_Value, Key_Number ) 0033 Else If ( Option .eq. 'S' ) Then 0034 Call Modify_Test_Scores ( Key_Value, Key_Number ) 0035 Else If ( Option .eq. 'T' ) Then 0036 Call Modify_Test_Comment ( Key_Value, Key_Number ) 0037 End If 0038 c 0039 End Do 0040 c 0041 Call Lib$Erase_Page ( 6, 1 ) 0042 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0043 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0044 c 0045 Return 0046 End MODIFY_STUDENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 100 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 286 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 31 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 132 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 449 ENTRY POINTS Address Type Name 0-00000000 MODIFY_STUDENT VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*1 DONE AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 2-00000004 I*4 LENGTH 2-00000002 CHAR OPTION 2-00000001 CHAR SI 2-00000000 CHAR SO FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MODIFY_SCREEN LIB$ERASE_PAGE LIB$PUT_SCREEN MODIFY_DEPARTMENT_NAME MODIFY_LETTER_GRADE MODIFY_STUDENT_COMMENT MODIFY_STUDENT_NUMBER MODIFY_TEST_COMMENT MODIFY_TEST_SCORES SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 101 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 102 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Test_Comment ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*20 New_Comment 0049 Character*2 Number 0050 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0051 c 0052 Integer Key_Number, Grade_Number, Get_Integer 0053 c 0054 Call Lib$Erase_Page ( 6, 1 ) 0055 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0056 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0057 c 0058 Do While ( Get_Integer ( Grade_Number, 10, 1, 1, 20, 0059 1 'Enter the number of the comment to be modified' ) ) 0060 c 0061 Write ( Number, 10 ) Grade_Number 0062 If ( Number( 1: 1 ) .eq. ' ' ) Number ( 1: 1 ) = Null 0063 Call Lib$Erase_Line ( 15, 1 ) 0064 Call Lib$Put_Screen ( 'Comment for grade ' // Number, 0065 1 15, 31, 1 ) 0066 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0067 1 18, 31, 1 ) 0068 c 0069 Length = 1 0070 c 0071 Do While ( Length .gt. 0 ) 0072 Call Lib$Erase_Line ( 13, 1 ) 0073 Call Display_Current_Record ( 13, 1 ) 0074 c 0075 Call Lib$Put_Screen ( Test_Comments( Grade_Number ), 0076 1 19, 31, 2 ) 0077 c 0078 Call Lib$Set_Cursor ( 17, 31 ) 0079 Call Lib$Erase_Line ( 17, 31 ) 0080 Call Lib$Get_Screen ( New_Comment, , Length ) 0081 c 0082 If ( Length .gt. 0 ) Then 0083 Call Str$UpCase ( Test_Comments( Grade_Number ), 0084 1 New_Comment ) 0085 Call Update_Record 0086 Call ReRead_Record ( Key_Value, Key_Number ) 0087 End If 0088 c 0089 End Do 0090 c 0091 End Do 0092 c 0093 Return 0094 c 0095 10 Format ( I2 ) 0096 c 0097 End MODIFY_TEST_COMMENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 103 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 389 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 144 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 300 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1453 ENTRY POINTS Address Type Name 0-00000000 MODIFY_TEST_COMMENT VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 2-0000001C I*4 GRADE_NUMBER AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000020 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000000 CHAR NEW_COMMENT 2-00000018 CHAR NULL 2-00000014 CHAR NUMBER 2-00000017 CHAR SI 2-00000016 CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label 1-00000067 10' MODIFY_TEST_COMMENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 104 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD I*4 GET_INTEGER LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 105 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 106 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Test_Scores ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*10 Default_Score, Input_Score 0049 Character*2 Number 0050 Character*1 So / 14 /, Si / 15 /, Null / 0 / 0051 c 0052 Integer Key_Number, Grade_Number, Score_Ios 0053 Integer Score_Length, Get_Integer 0054 c 0055 Call Lib$Erase_Page ( 6, 1 ) 0056 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0057 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0058 c 0059 Do While ( Get_Integer ( Grade_Number, 10, 1, 1, 20, 0060 1 'Enter the number of the grade to be modified' ) ) 0061 c 0062 Call Display_Current_Record ( 13, 1 ) 0063 Write ( Number, 10 ) Grade_Number 0064 If ( Number( 1: 1 ) .eq. ' ' ) Number ( 1: 1 ) = Null 0065 Call Lib$Erase_Line ( 15, 1 ) 0066 Call Lib$Put_Screen ( 'Score for grade ' // Number, 0067 1 15, 31, 1 ) 0068 Call Lib$Put_Screen ( So // 'oooooooooo' // Si, 0069 1 18, 35, 1 ) 0070 c 0071 Score_Length = 1 0072 c 0073 Do While ( Score_Length .gt. 0 ) 0074 c 0075 Write ( Default_Score, 20 ) Test_Score( Grade_Number ) 0076 Call Lib$Put_Screen ( Default_Score, 0077 1 19, 35, 2 ) 0078 c 0079 Score_Ios = -1 0080 c 0081 Do While ( Score_Ios .ne. 0 ) 0082 c 0083 Call Lib$Erase_Line ( 17, 35 ) 0084 Call Lib$Set_Cursor ( 17, 35 ) 0085 Call Lib$Get_Screen ( Input_Score, , Score_Length ) 0086 c 0087 If ( Score_Length .gt. 0 ) Then 0088 Read ( Input_Score( : Score_Length ), 30, 0089 1 IOStat = Score_Ios ) X 0090 Else 0091 Score_Ios = 0 0092 End If 0093 c 0094 End Do 0095 c 0096 If ( Score_Length .gt. 0 ) Then 0097 Test_Score( Grade_Number ) = X 0098 Call Update_Record MODIFY_TEST_SCORES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 107 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0099 Call ReRead_Record ( Key_Value, Key_Number ) 0100 End If 0101 c 0102 End Do 0103 c 0104 End Do 0105 c 0106 Return 0107 c 0108 10 Format ( I2 ) 0109 20 Format ( F10.2 ) 0110 30 Format ( F10.0 ) 0111 c 0112 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 480 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 142 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 292 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1534 ENTRY POINTS Address Type Name 0-00000000 MODIFY_TEST_SCORES VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000000 CHAR DEFAULT_SCORE 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 2-0000001C I*4 GRADE_NUMBER 2-0000000A CHAR INPUT_SCORE AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-00000018 CHAR NULL 2-00000014 CHAR NUMBER ** I*4 SCORE_IOS 2-00000020 I*4 SCORE_LENGTH 2-00000017 CHAR SI 2-00000016 CHAR SO 3-00000028 CHAR STUDENT_NUMBER 2-00000024 R*4 X MODIFY_TEST_SCORES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 108 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label 1-00000069 10' 1-0000006C 20' 1-00000070 30' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD I*4 GET_INTEGER LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 109 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 110 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Student_Number ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*20 New_Number 0049 Character*1 So / 14 /, Si / 15 / 0050 c 0051 Integer Key_Number 0052 c 0053 Call Lib$Erase_Page ( 6, 1 ) 0054 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0055 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0056 c 0057 Length = 1 0058 c 0059 Do While ( Length .gt. 0 ) 0060 Call Display_Current_Record ( 10, 1 ) 0061 Call Lib$Put_Screen ( 'Student Number', 0062 1 12, 33, 1 ) 0063 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0064 1 15, 30, 1 ) 0065 Call Lib$Put_Screen ( Student_Number, 0066 1 16, 30, 2 ) 0067 c 0068 Call Lib$Set_Cursor ( 14, 30 ) 0069 Call Lib$Erase_Line ( 14, 30 ) 0070 Call Lib$Get_Screen ( New_Number, , Length ) 0071 c 0072 If ( Length .gt. 0 ) Then 0073 Call Str$UpCase ( Student_Number, New_Number ) 0074 Call Update_Record 0075 Call ReRead_Record ( Key_Value, Key_Number ) 0076 End If 0077 End Do 0078 c 0079 Return 0080 End MODIFY_STUDENT_NUMBER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 111 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 249 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 87 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 244 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1200 ENTRY POINTS Address Type Name 0-00000000 MODIFY_STUDENT_NUMBER VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000018 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000000 CHAR NEW_NUMBER 2-00000015 CHAR SI 2-00000014 CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 112 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 113 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Letter_Grade ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*10 Grade_Average 0049 Character*1 So / 14 /, Si / 15 /, New_Letter 0050 c 0051 Integer Key_Number 0052 c 0053 Call Lib$Erase_Page ( 6, 1 ) 0054 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0055 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0056 c 0057 Length = 1 0058 c 0059 Do While ( Length .gt. 0 ) 0060 Call Display_Current_Record ( 10, 1 ) 0061 c 0062 Write ( Grade_Average, 10 ) Average_Grade 0063 Call Lib$Put_Screen ( 'Average Score', 0064 1 12, 14, 1 ) 0065 Call Lib$Put_Screen ( 'Letter Grade', 0066 1 12, 34, 1 ) 0067 Call Lib$Put_Screen ( Grade_Average, 0068 1 14, 16, 1 ) 0069 Call Lib$Put_Screen ( So // 'o' // Si, 0070 1 15, 40, 1 ) 0071 Call Lib$Put_Screen ( Letter_Grade, 16, 40, 2 ) 0072 c 0073 New_Letter = '?' 0074 c 0075 Do While (( ( New_Letter .lt. 'A' ) .or. 0076 1 ( New_Letter .gt. 'F' ) ) .and. 0077 1 ( Length .gt. 0 ) ) 0078 Call Lib$Set_Cursor ( 14, 40 ) 0079 Call Lib$Erase_Line ( 14, 40 ) 0080 Call Lib$Get_Screen ( New_letter, , Length ) 0081 Call Str$UpCase ( New_letter, New_Letter ) 0082 End Do 0083 c 0084 If ( Length .gt. 0 ) Then 0085 Letter_Grade = New_Letter 0086 Call Update_Record 0087 Call ReRead_Record ( Key_Value, Key_Number ) 0088 End If 0089 End Do 0090 c 0091 Return 0092 c 0093 10 Format ( F10.2 ) 0094 c 0095 End MODIFY_LETTER_GRADE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 114 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 329 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 83 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 292 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1324 ENTRY POINTS Address Type Name 0-00000000 MODIFY_LETTER_GRADE VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 2-00000000 CHAR GRADE_AVERAGE AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000010 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-0000000C CHAR NEW_LETTER 2-0000000B CHAR SI 2-0000000A CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label 1-0000004F 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 115 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 116 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Student_Comment ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*20 New_Comment 0049 Character*1 So / 14 /, Si / 15 / 0050 c 0051 Integer Key_Number 0052 c 0053 Call Lib$Erase_Page ( 6, 1 ) 0054 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0055 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0056 c 0057 Length = 1 0058 c 0059 Do While ( Length .gt. 0 ) 0060 Call Display_Current_Record ( 10, 1 ) 0061 Call Lib$Put_Screen ( 'Student Comment', 0062 1 12, 32, 1 ) 0063 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0064 1 15, 30, 1 ) 0065 Call Lib$Put_Screen ( Comment, 16, 30, 2 ) 0066 c 0067 Call Lib$Set_Cursor ( 14, 30 ) 0068 Call Lib$Erase_Line ( 14, 30 ) 0069 Call Lib$Get_Screen ( New_Comment, , Length ) 0070 c 0071 If ( Length .gt. 0 ) Then 0072 Call Str$UpCase ( Comment, New_Comment ) 0073 Call Update_Record 0074 Call ReRead_Record ( Key_Value, Key_Number ) 0075 End If 0076 End Do 0077 c 0078 Return 0079 End MODIFY_STUDENT_COMMENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 117 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 249 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 89 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 244 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1202 ENTRY POINTS Address Type Name 0-00000000 MODIFY_STUDENT_COMMENT VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000018 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000000 CHAR NEW_COMMENT 2-00000015 CHAR SI 2-00000014 CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 118 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 119 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Modify_Department_Name ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*20 New_Department 0049 Character*1 So / 14 /, Si / 15 / 0050 c 0051 Integer Key_Number 0052 c 0053 Call Lib$Erase_Page ( 6, 1 ) 0054 Call Lib$Put_Screen ( So // 'm' // Si, 5, 21, 1 ) 0055 Call Lib$Put_Screen ( So // 'j' // Si, 5, 60, 1 ) 0056 c 0057 Length = 1 0058 c 0059 Do While ( Length .gt. 0 ) 0060 Call Display_Current_Record ( 10, 1 ) 0061 Call Lib$Put_Screen ( 'Department Name', 0062 1 12, 32, 1 ) 0063 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0064 1 15, 30, 1 ) 0065 Call Lib$Put_Screen ( Department_Name, 0066 1 16, 30, 2 ) 0067 c 0068 Call Lib$Erase_Line ( 14, 30 ) 0069 Call Lib$Set_Cursor ( 14, 30 ) 0070 Call Lib$Get_Screen ( New_Department, , Length ) 0071 c 0072 If ( Length .gt. 0 ) Then 0073 Call Str$UpCase ( Department_Name, New_Department ) 0074 Call Update_Record 0075 Call ReRead_Record ( Key_Value, Key_Number ) 0076 End If 0077 End Do 0078 c 0079 Return 0080 End MODIFY_DEPARTMENT_NAME 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 120 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 249 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 89 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 244 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1202 ENTRY POINTS Address Type Name 0-00000000 MODIFY_DEPARTMENT_NAME VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000018 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 2-00000000 CHAR NEW_DEPARTMENT 2-00000015 CHAR SI 2-00000014 CHAR SO 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_CURRENT_RECORD LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR REREAD_RECORD STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 121 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 122 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Current_Record ( Line, Column ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Integer Line, Column 0048 c 0049 I = Index ( Last_Name, ' ' ) - 1 0050 If ( I .le. 0 ) I = 20 0051 J = Index ( First_Name, ' ' ) - 1 0052 If ( J .le. 0 ) J = 20 0053 K = Index ( Student_Number, ' ' ) - 1 0054 If ( K .le. 0 ) K = 20 0055 L = Index ( Department_Name, ' ' ) - 1 0056 If ( L .le. 0 ) L = 20 0057 c 0058 Call Lib$Erase_Line ( Line, Column ) 0059 Call Lib$Put_Screen ( ' Using ' // 0060 1 First_Name( : J ) // ' ' // 0061 1 Last_Name( : I ) // ' / ' // 0062 1 Student_Number( : K ) // ' / ' // 0063 1 Department_Name( : L ) // ' ... ', 0064 1 Line, Column, 2 ) 0065 c 0066 Return 0067 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 259 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 22 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 132 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1033 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_CURRENT_RECORD VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE AP-00000008@ I*4 COLUMN 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I 2-00000000 I*4 J ** I*4 K DISPLAY_CURRENT_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 123 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ** I*4 L 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE AP-00000004@ I*4 LINE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE I*4 LIB$INDEX LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 124 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 125 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine ReRead_Record ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 c 0049 Integer Key_Number 0050 c 0051 Read ( Data_File_Lun, 0052 1 Key = Key_Value, 0053 1 KeyId = Key_Number, 0054 1 IoStat = Ios, 0055 1 Err = 200 ) Student_Record 0056 c 0057 200 Return 0058 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 64 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 24 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 708 ENTRY POINTS Address Type Name 0-00000000 REREAD_RECORD VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 IOS AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) REREAD_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 126 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label 0-0000003F 200 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 127 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 128 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Add_Grades 0004 c 0005 Integer Grade_Number, Get_Integer 0006 c 0007 Character*2 Number 0008 Character*1 Null / 0 / 0009 c 0010 Call Draw_Menu_Header ( 'Add Grades', 3 ) 0011 c 0012 Call Lib$Erase_Line ( 10, 1 ) 0013 c 0014 Do While ( Get_Integer ( Grade_Number, 10, 1, 1, 20, 0015 1 'Enter the number of the grade to be added' ) ) 0016 c 0017 Write ( Number, 10 ) Grade_Number 0018 If ( Number( 1: 1 ) .eq. ' ' ) Number ( 1: 1 ) = Null 0019 Call Lib$Erase_Line ( 15, 1 ) 0020 Call Lib$Put_Screen ( 'Score for grade ' // Number, 0021 1 15, 17, 1 ) 0022 Call Lib$Put_Screen ( 'Comment for grade ' // Number, 0023 1 15, 41, 1 ) 0024 Call Add_Scores ( Grade_Number ) 0025 c 0026 End Do 0027 Return 0028 c 0029 10 Format ( I2 ) 0030 c 0031 End ADD_GRADES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 129 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 185 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 118 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 152 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 455 ENTRY POINTS Address Type Name 0-00000000 ADD_GRADES VARIABLES Address Type Name Address Type Name Address Type Name 2-00000004 I*4 GRADE_NUMBER 2-00000002 CHAR NULL 2-00000000 CHAR NUMBER LABELS Address Label 1-00000051 10' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name ADD_SCORES DRAW_MENU_HEADER I*4 GET_INTEGER LIB$ERASE_LINE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 130 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 131 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Add_Scores ( Grade_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Integer Grade_Number, Score_Ios 0048 Integer Score_Length, Comment_Length 0049 c 0050 Character*20 Default_Comment, Input_Comment 0051 Character*10 Default_Score, Input_Score 0052 Character*1 Null_Plus_1 / 1 /, Opt 0053 c 0054 Call Display_Add_Grades_Screen 0055 c 0056 Default_Score = ' 0.00' 0057 Default_Comment = ' ' 0058 c 0059 Read ( Data_File_Lun, 0060 1 KeyGt = Null_Plus_1, 0061 1 KeyId = 0, 0062 1 IoStat = Ios, 0063 1 Err = 200 ) Student_Record 0064 c 0065 Do While ( .True. ) 0066 c 0067 Call Display_Add_Score_Defaults ( Default_Score, Default_Comment ) 0068 c 0069 Score_Ios = -1 0070 c 0071 Do While ( Score_Ios .ne. 0 ) 0072 c 0073 Call Lib$Set_Cursor ( 17, 21 ) 0074 Call Lib$Get_Screen ( Input_Score, , Score_Length ) 0075 c 0076 If ( Score_Length .le. 0 ) Then 0077 Input_Score = Default_Score 0078 Score_Length = 10 0079 End If 0080 c 0081 Read ( Input_Score( : Score_Length ), 10, 0082 1 IOStat = Score_Ios ) X 0083 c 0084 End Do 0085 c 0086 Write ( Input_Score, 20 ) X 0087 Default_Score = Input_Score 0088 Call Lib$Put_Screen ( Input_Score, 17, 21, 1 ) 0089 Test_Score( Grade_Number ) = X 0090 c 0091 Call Lib$Set_Cursor ( 17, 41 ) 0092 Call Lib$Get_Screen ( Input_Comment, , Comment_Length ) 0093 c 0094 If ( Comment_Length .le. 0 ) Then 0095 Input_Comment = Default_Comment 0096 Else 0097 Call Str$Upcase ( Input_Comment, Input_Comment ) 0098 Default_Comment = Input_Comment ADD_SCORES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 132 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0099 End If 0100 c 0101 Call Lib$Put_Screen ( Input_Comment, 17, 41, 1 ) 0102 Test_Comments( Grade_Number ) = Input_Comment 0103 c 0104 Call Update_Record 0105 c 0106 Read ( Data_File_Lun, 0107 1 IoStat = Ios, 0108 1 Err = 200 ) Student_Record 0109 c 0110 End Do 0111 c 0112 200 Continue 0113 Return 0114 c 0115 10 Format ( F10.0 ) 0116 20 Format ( F10.2 ) 0117 c 0118 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 361 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 54 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 260 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1295 ENTRY POINTS Address Type Name 0-00000000 ADD_SCORES VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 2-00000044 I*4 COMMENT_LENGTH 2-00000000 CHAR DEFAULT_COMMENT 2-00000028 CHAR DEFAULT_SCORE 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME AP-00000004@ I*4 GRADE_NUMBER 2-00000014 CHAR INPUT_COMMENT 2-00000032 CHAR INPUT_SCORE ** I*4 IOS 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 2-0000003C CHAR NULL_PLUS_1 ** CHAR OPT ** I*4 SCORE_IOS 2-00000040 I*4 SCORE_LENGTH 3-00000028 CHAR STUDENT_NUMBER 2-00000048 R*4 X ADD_SCORES 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 133 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label Address Label Address Label 1-00000010 10' 1-00000014 20' 0-00000168 200 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_ADD_GRADES_SCREEN DISPLAY_ADD_SCORE_DEFAULTS LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR STR$UPCASE UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 134 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 135 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Update_Record 0004 c 0005 Include 'Student.Rec' 0046 c 0047 I = Index ( Last_Name, ' ' ) - 1 0048 If ( I .le. 0 ) I = 20 0049 J = Index ( First_Name, ' ' ) - 1 0050 If ( J .le. 0 ) J = 20 0051 K = Index ( Student_Number, ' ' ) - 1 0052 If ( K .le. 0 ) K = 20 0053 L = Index ( Department_Name, ' ' ) - 1 0054 If ( L .le. 0 ) L = 20 0055 c 0056 Call Lib$Erase_Line ( 23, 1 ) 0057 Call Lib$Put_Screen ( ' Updating ' // 0058 1 First_Name( : J ) // ' ' // 0059 1 Last_Name( : I ) // ' / ' // 0060 1 Student_Number( : K ) // ' / ' // 0061 1 Department_Name( : L ) // ' ... ', 0062 1 23, 1, 2 ) 0063 c 0064 ReWrite ( Data_File_Lun ) Student_Record 0065 c 0066 200 Return 0067 c 0068 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 269 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 33 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 144 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1066 ENTRY POINTS Address Type Name 0-00000000 UPDATE_RECORD VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 J UPDATE_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 136 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ** I*4 K ** I*4 L 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label ** 200 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE I*4 LIB$INDEX LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 137 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 138 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Integer Function Get_Integer ( Number, Row, Column, Min, Max, 0004 1 Prompt ) 0005 c 0006 Integer Number, Ios, Length 0007 Integer Column, Row, Min, Max 0008 c 0009 Character Prompt*(*) 0010 Character*10 Value 0011 Character*2 Maximum, Minimum 0012 Character*1 Null / 0 / 0013 c 0014 Ios = 1 0015 Length = 1 0016 c 0017 Write ( Maximum, 20 ) Max 0018 Write ( Minimum, 20 ) Min 0019 If ( Maximum( 1: 1 ) .eq. ' ' ) Maximum( 1: 1 ) = Null 0020 If ( Minimum( 1: 1 ) .eq. ' ' ) Minimum( 1: 1 ) = Null 0021 c 0022 Do While ( ( Ios .ne. 0 ) .and. ( Length .gt. 0 ) ) 0023 c 0024 Call Lib$Put_Screen ( Prompt // ' [R:' // Minimum // '-' // 0025 1 Maximum // ']: ', Row, Column, 1 ) 0026 Call Lib$Erase_Line 0027 Call Lib$Get_Screen ( Value, , Length ) 0028 c 0029 If ( Length .gt. 0 ) Then 0030 Read ( Value( : Length ), 10, IOStat = Ios ) X 0031 If ( ( X .lt. Float( Min ) ) .or. 0032 1 ( X .gt. Float( Max ) ) ) Ios = -1 0033 End If 0034 c 0035 End Do 0036 c 0037 If ( ( Length .le. 0 ) .or. 0038 1 ( X .lt. Float( Min ) ) .or. 0039 1 ( X .gt. Float( Max ) ) ) Then 0040 Get_Integer = .False. 0041 Else 0042 Get_Integer = .True. 0043 Number = X 0044 End If 0045 c 0046 Return 0047 10 Format ( F10.0 ) 0048 20 Format ( I2 ) 0049 End GET_INTEGER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 139 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 350 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 14 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 104 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 468 ENTRY POINTS Address Type Name 0-00000000 I*4 GET_INTEGER VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-0000000C@ I*4 COLUMN ** I*4 IOS 2-00000014 I*4 LENGTH AP-00000014@ I*4 MAX 2-0000000A CHAR MAXIMUM AP-00000010@ I*4 MIN 2-0000000C CHAR MINIMUM 2-0000000E CHAR NULL AP-00000004@ I*4 NUMBER AP-00000018@ CHAR PROMPT AP-00000008@ I*4 ROW 2-00000000 CHAR VALUE 2-00000018 R*4 X LABELS Address Label Address Label 1-00000004 10' 1-00000008 20' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE LIB$GET_SCREEN LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 140 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 141 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Select_Student_Menu ( Menu_Name, 0004 1 Prompt, 0005 1 Screen_Name, 0006 1 Action_Routine ) 0007 c 0008 Character Menu_Name*(*), Screen_Name*(*), Prompt*(*) 0009 c 0010 Character*1 Option 0011 c 0012 Logical*1 Done 0013 c 0014 Integer Key 0015 c 0016 External Action_Routine 0017 c 0018 Done = .False. 0019 c 0020 Do While ( .Not. Done ) 0021 c 0022 Call Draw_Select_Menu ( Menu_Name ) 0023 c 0024 Length = 1 0025 Option = '?' 0026 c 0027 Call Select_Option ( 'DNS', Option, Length, 19, 33, 1 ) 0028 c 0029 If ( Length .le. 0 ) then 0030 Done = .True. 0031 Else 0032 Call Draw_Menu_Header ( Screen_Name, 3 ) 0033 If ( Option .eq. 'N' ) Then 0034 Call Select_By_Key ( 0, 'LAST name', 0035 1 Prompt, Action_Routine ) 0036 Else If ( Option .eq. 'S' ) Then 0037 Call Select_By_Key ( 1, 'NUMBER', 0038 1 Prompt, Action_Routine ) 0039 Else If ( Option .eq. 'D' ) Then 0040 Call Select_By_Key ( 2, 'DEPARTMENT name', 0041 1 Prompt, Action_Routine ) 0042 End If 0043 End If 0044 c 0045 End Do 0046 c 0047 Return 0048 End SELECT_STUDENT_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 142 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 165 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 61 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 180 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 406 ENTRY POINTS Address Type Name 0-00000000 SELECT_STUDENT_MENU VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*1 DONE ** I*4 KEY 2-00000004 I*4 LENGTH AP-00000004@ CHAR MENU_NAME 2-00000000 CHAR OPTION AP-00000008@ CHAR PROMPT AP-0000000C@ CHAR SCREEN_NAME FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name @ ACTION_ROUTINE DRAW_MENU_HEADER DRAW_SELECT_MENU SELECT_BY_KEY SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 143 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 144 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Select_By_Key ( Key_Value, 0004 1 Prompt_1, 0005 1 Prompt_2, 0006 1 Action_Routine ) 0007 c 0008 Character*20 String 0009 c 0010 Character Prompt_1*(*), Prompt_2*(*) 0011 c 0012 Integer Key_Value 0013 c 0014 External Action_Routine 0015 c 0016 Length = 1 0017 c 0018 Do While ( Length .gt. 0 ) 0019 c 0020 Call Lib$Put_Screen ( 0021 1 'Enter the ' // Prompt_1 // 0022 1 ' of the student to be ' // Prompt_2 // ': ', 9, 1, 1 ) 0023 c 0024 Call Lib$Get_Screen ( String, , Length ) 0025 c 0026 If ( Length .gt. 0 ) Then 0027 Call Lib$Erase_Page ( 8, 1 ) 0028 Call Str$UpCase ( String, String ) 0029 Call Read_Students ( String( : Length ), Key_Value, 0030 1 Action_Routine ) 0031 End If 0032 c 0033 End Do 0034 c 0035 Return 0036 End SELECT_BY_KEY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 145 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 193 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 44 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 132 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 369 ENTRY POINTS Address Type Name 0-00000000 SELECT_BY_KEY VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000004@ I*4 KEY_VALUE 2-00000014 I*4 LENGTH AP-00000008@ CHAR PROMPT_1 AP-0000000C@ CHAR PROMPT_2 2-00000000 CHAR STRING FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name @ ACTION_ROUTINE LIB$ERASE_PAGE LIB$GET_SCREEN LIB$PUT_SCREEN READ_STUDENTS STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 146 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 147 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Delete_Student ( Key_Value, Key_Number ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Key_Value*(*) 0048 Character*1 Option 0049 c 0050 Integer Ios, Key_Number 0051 c 0052 I = Index ( Last_Name, ' ' ) - 1 0053 If ( I .le. 0 ) I = 20 0054 J = Index ( First_Name, ' ' ) - 1 0055 If ( J .le. 0 ) J = 20 0056 K = Index ( Student_Number, ' ' ) - 1 0057 If ( K .le. 0 ) K = 20 0058 c 0059 Call Lib$Erase_Page ( 14, 1 ) 0060 Call Lib$Put_Screen ( 'Are you sure you want to delete ', 15, 1, 1 ) 0061 Call Lib$Put_Screen ( First_Name( : J ) // ' ' // 0062 1 Last_Name( : I ) // ' / ' // 0063 1 Student_Number( : K ), 15, 33, 2 ) 0064 Call Lib$Put_Screen ( '? ', 15, 38 + I + J + K, 1 ) 0065 Call Lib$Get_Screen ( Option, , Len ) 0066 c 0067 If ( Len .gt. 0 ) Then 0068 Call Str$UpCase( Option, Option ) 0069 If ( ( Option .eq. 'Y' ) .or. ( Option .eq. 'T' ) ) Then 0070 Delete ( Data_File_Lun, Err = 200 ) 0071 Call Lib$Put_Screen( 0072 1 First_Name( : J ) // ' ' // 0073 1 Last_Name( : I ) // ' / ' // 0074 1 Student_Number( : K ) // 0075 1 ' has been deleted.', 18, 1, 1 ) 0076 End If 0077 End If 0078 c 0079 Call Lib$Erase_Line ( 15, 1 ) 0080 Return 0081 c 0082 200 Continue 0083 Call Lib$Put_Screen( 'Error', 18, 1, 2 ) 0084 Return 0085 End DELETE_STUDENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 148 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 402 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 90 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 280 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1392 ENTRY POINTS Address Type Name 0-00000000 DELETE_STUDENT VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I ** I*4 IOS 2-00000004 I*4 J ** I*4 K AP-00000008@ I*4 KEY_NUMBER AP-00000004@ CHAR KEY_VALUE 3-00000000 CHAR LAST_NAME 2-00000008 I*4 LEN 3-00000268 CHAR LETTER_GRADE 2-00000000 CHAR OPTION 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label 0-0000017C 200 DELETE_STUDENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 149 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE LIB$ERASE_PAGE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 150 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 151 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Read_Students( Key_Value, Key_Number, Action_Routine ) 0004 c 0005 Character Key_Value*(*) 0006 Character*40 Key 0007 Character*1 Cont 0008 c 0009 Integer Student_Count, Key_Number, Done 0010 c 0011 c *** Student Record Common Block Definitions 0012 c 0013 Parameter Data_File_Lun = 1 0014 c 0015 Character*20 Student_Key( 0: 3 ) 0016 c 0017 Logical*1 Student_Record( 620 ) 0018 c 0019 Common / Record / Student_Record 0020 c 0021 Equivalence( Student_Record, Student_Key ) 0022 c 0023 c *** End Of Student Record Definitions 0024 c 0025 External Action_Routine 0026 c 0027 Length = Len ( Key_Value ) 0028 c 0029 Cont = '?' 0030 c 0031 If ( Key_Number .gt. 0 ) Then 0032 Key_Pointer = Key_Number + 1 0033 Else 0034 Key_Pointer = Key_Number 0035 End If 0036 c 0037 Read ( Data_File_Lun, 0038 1 Key = Key_Value, 0039 1 KeyId = Key_Number, 0040 1 IoStat = Ios, 0041 1 Err = 200 ) Student_Record 0042 c 0043 Done = .False. 0044 c 0045 Do While ( ( Key_Value( : Length ) .eq. 0046 1 Student_Key( Key_Pointer )( : Length ) ) 0047 1 .and. ( .not. Done ) ) 0048 c 0049 Call Lib$Erase_Line ( 11, 1 ) 0050 Call Lib$Erase_Line ( 13, 1 ) 0051 c 0052 I = Index ( Student_Key( 1 ), ' ' ) - 1 0053 If ( I .le. 0 ) I = 20 0054 J = Index ( Student_Key( 0 ), ' ' ) - 1 0055 If ( J .le. 0 ) J = 20 0056 K = Index ( Student_Key( 2 ), ' ' ) - 1 0057 If ( K .le. 0 ) K = 20 0058 L = Index ( Student_Key( 3 ), ' ' ) - 1 READ_STUDENTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 152 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0059 If ( L .le. 0 ) L = 20 0060 c 0061 Call Lib$Put_Screen ( ' ' // 0062 1 Student_Key( 1 )( : I ) // ' ' // 0063 1 Student_Key( 0 )( : J ) // ' / ' // 0064 1 Student_Key( 2 )( : K ) // ' / ' // 0065 1 Student_Key( 3 )( : L ) // ' ', 0066 1 11, 1, 2 ) 0067 c 0068 Call Lib$Set_Cursor ( 13, 1 ) 0069 Call Lib$Get_Screen ( Cont, 0070 1 'Select this student [y/n/q]? ', I_Size ) 0071 c 0072 If ( I_Size .gt. 0 ) Then 0073 c 0074 Call Str$UpCase ( Cont, Cont ) 0075 If ( ( Cont .eq. 'Y' ) .or. ( Cont .eq. 'T' ) ) Then 0076 If ( Key_Number .eq. 0 ) Then 0077 Key = Student_Key( 0 ) // Student_Key( 1 ) 0078 I_Length = 40 0079 Else 0080 Key = Student_Key( Key_Pointer ) 0081 I_Length = 20 0082 End If 0083 Call Action_Routine ( Key( : I_Length ), Key_Number ) 0084 Else If ( Cont .eq. 'Q' ) Then 0085 Done = .True. 0086 End If 0087 c 0088 End If 0089 c 0090 If ( .not. Done ) Then 0091 Read ( Data_File_Lun, 0092 1 IoStat = Ios, 0093 1 Err = 200 ) Student_Record 0094 End If 0095 c 0096 End Do 0097 c 0098 Return 0099 c 0100 200 Continue 0101 c 0102 If ( Cont .eq. '?' ) Then 0103 Call Lib$Put_Screen ( '%GRADE-I-NOTFOUND, "' // Key_Value // 0104 1 '" not found.', 11, 1, 2 ) 0105 End If 0106 c 0107 Return 0108 End READ_STUDENTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 153 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 627 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 84 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 280 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1611 ENTRY POINTS Address Type Name 0-00000000 READ_STUDENTS VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-00000028 CHAR CONT 2-0000002C I*4 DONE 2-00000034 I*4 I ** I*4 IOS ** I*4 I_LENGTH 2-00000038 I*4 I_SIZE ** I*4 J ** I*4 K 2-00000000 CHAR KEY AP-00000008@ I*4 KEY_NUMBER ** I*4 KEY_POINTER AP-00000004@ CHAR KEY_VALUE ** I*4 L 2-00000030 I*4 LENGTH ** I*4 STUDENT_COUNT ARRAYS Address Type Name Bytes Dimensions 3-00000000 CHAR STUDENT_KEY 80 (0:3) 3-00000000 L*1 STUDENT_RECORD 620 (620) LABELS Address Label 0-00000228 200 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name @ ACTION_ROUTINE LIB$ERASE_LINE LIB$GET_SCREEN I*4 LIB$INDEX LIB$PUT_SCREEN LIB$SET_CURSOR STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 154 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 155 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Add_Student 0004 c 0005 Character*1 Option 0006 c 0007 Integer Add_A_Record 0008 Logical*1 Done, First_Pass 0009 c 0010 First_Pass = .True. 0011 Done = .False. 0012 Call Draw_Add_Screen 0013 c 0014 Do While ( .Not. Done ) 0015 c 0016 Length = 1 0017 Option = '?' 0018 c 0019 Call Select_Option ( 'CD', Option, Length, 3, 57, 1 ) 0020 c 0021 Call Lib$Erase_Page ( 20, 1 ) 0022 c 0023 If ( Option .eq. 'C' ) Then 0024 First_Pass = .True. 0025 Call Display_Add_Defaults 0026 Else If ( Option .eq. 'D' ) Then 0027 If ( First_Pass ) Then 0028 Done = .True. 0029 Else 0030 Istat = Add_A_Record( ) 0031 If ( Istat ) Then 0032 Done = .True. 0033 Else 0034 First_Pass = .True. 0035 End If 0036 End If 0037 Else 0038 If ( First_Pass ) Then 0039 First_Pass = .False. 0040 Call Get_Student_Info 0041 Else 0042 Istat = Add_A_Record( ) 0043 If ( Istat ) Then 0044 Call Get_Student_Info 0045 Else 0046 First_Pass = .True. 0047 End If 0048 End If 0049 End If 0050 c 0051 End Do 0052 c 0053 Return 0054 End ADD_STUDENT 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 156 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 157 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 19 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 72 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 248 ENTRY POINTS Address Type Name 0-00000000 ADD_STUDENT VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** L*1 DONE ** L*1 FIRST_PASS ** I*4 ISTAT 2-00000004 I*4 LENGTH 2-00000000 CHAR OPTION FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 ADD_A_RECORD DISPLAY_ADD_DEFAULTS DRAW_ADD_SCREEN GET_STUDENT_INFO LIB$ERASE_PAGE SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 157 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 158 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Integer Function Add_A_Record( ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 I = Index ( Last_Name, ' ' ) - 1 0048 If ( I .le. 0 ) I = 20 0049 J = Index ( First_Name, ' ' ) - 1 0050 If ( J .le. 0 ) J = 20 0051 K = Index ( Student_Number, ' ' ) - 1 0052 If ( K .le. 0 ) K = 20 0053 L = Index ( Department_Name, ' ' ) - 1 0054 If ( L .le. 0 ) L = 20 0055 c 0056 Call Lib$Put_Screen ( ' Adding record ' // 0057 1 First_Name( : J ) // ' ' // 0058 1 Last_Name( : I ) // ' / ' // 0059 1 Student_Number( : K ) // ' / ' // 0060 1 Department_Name( : L ) // ' ', 0061 1 20, 1, 2 ) 0062 c 0063 Do I = 101, 500 0064 Student_Record( I ) = 32 0065 End Do 0066 c 0067 Do I = 501, 620 0068 Student_Record( I ) = 0 0069 End Do 0070 c 0071 Write ( Data_File_Lun, 0072 1 Err = 200, 0073 1 Iostat = istat ) Student_Record 0074 c 0075 Add_A_Record = .True. 0076 c 0077 Return 0078 c 0079 200 Continue 0080 c 0081 Add_A_Record = .False. 0082 Call Lib$Put_Screen ( '%GRADE-E-', 21, 1, 1 ) 0083 If ( Istat .eq. 50 ) then 0084 Call Lib$Put_Screen ( 'INCKEYCHG, attempt to ' // 0085 1 'duplicate a record, record ' // 0086 1 'not added', 21, 10, 1 ) 0087 Else 0088 Call Lib$Put_Screen ( 'UNKOWN, unexpected error during ' // 0089 1 'write, record not added', 21, 10, 1 ) 0090 I = Mrk$_ErrRec ( '-GRADE-', Istat, ' ' ) 0091 End If 0092 Return 0093 End ADD_A_RECORD 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 159 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 365 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 176 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 256 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1417 ENTRY POINTS Address Type Name 0-00000000 I*4 ADD_A_RECORD VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I 2-00000004 I*4 ISTAT ** I*4 J ** I*4 K ** I*4 L 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) LABELS Address Label 0-0000013C 200 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name I*4 LIB$INDEX LIB$PUT_SCREEN I*4 MRK$_ERRREC 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 160 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 161 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Student_Info 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character*20 Input_Line 0048 c 0049 Call Display_Add_Defaults 0050 c 0051 Call Lib$Set_Cursor ( 9, 1 ) 0052 Call Lib$Get_Screen ( Input_Line, , Length ) 0053 If ( Length .gt. 0 ) Call Str$UpCase ( Last_Name , Input_Line ) 0054 Call Lib$Erase_Line ( 9, 1 ) 0055 Call Lib$Put_Screen ( Last_Name, 9, 1, 1 ) 0056 c 0057 Call Lib$Set_Cursor ( 9, 31 ) 0058 Call Lib$Get_Screen ( Input_Line, , Length ) 0059 If ( Length .gt. 0 ) Call Str$UpCase ( First_Name, Input_Line ) 0060 Call Lib$Erase_Line ( 9, 31 ) 0061 Call Lib$Put_Screen ( First_Name, 9, 31, 1 ) 0062 c 0063 Call Lib$Set_Cursor ( 9, 61 ) 0064 Call Lib$Get_Screen ( Input_Line, , Length ) 0065 If ( Length .gt. 0 ) Call Str$UpCase ( Student_Number, Input_Line ) 0066 Call Lib$Erase_Line ( 9, 61 ) 0067 Call Lib$Put_Screen ( Student_Number, 9, 61, 1 ) 0068 c 0069 Call Lib$Set_Cursor ( 16, 1 ) 0070 Call Lib$Get_Screen ( Input_Line, , Length ) 0071 If ( Length .gt. 0 ) Call Str$UpCase ( Department_Name, Input_Line ) 0072 Call Lib$Erase_Line ( 16, 1 ) 0073 Call Lib$Put_Screen ( Department_Name, 16, 1, 1 ) 0074 c 0075 Call Lib$Set_Cursor ( 16, 31 ) 0076 Call Lib$Get_Screen ( Input_Line, , Length ) 0077 If ( Length .gt. 0 ) Call Str$UpCase ( Comment, Input_Line ) 0078 Call Lib$Erase_Line ( 16, 31 ) 0079 Call Lib$Put_Screen ( Comment, 16, 31, 1 ) 0080 c 0081 Return 0082 End GET_STUDENT_INFO 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 162 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 250 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 20 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 308 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1198 ENTRY POINTS Address Type Name 0-00000000 GET_STUDENT_INFO VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 2-00000000 CHAR INPUT_LINE 3-00000000 CHAR LAST_NAME 2-00000014 I*4 LENGTH 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_ADD_DEFAULTS LIB$ERASE_LINE LIB$GET_SCREEN LIB$PUT_SCREEN LIB$SET_CURSOR STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 163 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 164 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Add_Score_Defaults( Default_1, Default_2 ) 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Character Default_1*(*), Default_2*(*) 0048 c 0049 Call Lib$Erase_Line ( 13, 1 ) 0050 Call Lib$Erase_Line ( 17, 1 ) 0051 Call Lib$Erase_Line ( 19, 1 ) 0052 c 0053 I = Index ( Last_Name, ' ' ) - 1 0054 If ( I .le. 0 ) I = 20 0055 J = Index ( First_Name, ' ' ) - 1 0056 If ( J .le. 0 ) J = 20 0057 K = Index ( Student_Number, ' ' ) - 1 0058 If ( K .le. 0 ) K = 20 0059 L = Index ( Department_Name, ' ' ) - 1 0060 If ( L .le. 0 ) L = 20 0061 c 0062 Call Lib$Put_Screen ( ' ' // 0063 1 First_Name( : J ) // ' ' // 0064 1 Last_Name( : I ) // ' / ' // 0065 1 Student_Number( : K ) // ' / ' // 0066 1 Department_Name( : L ) // ' ', 0067 1 13, 1, 2 ) 0068 Call Lib$Put_Screen ( Default_1, 20, 21, 2 ) 0069 Call Lib$Put_Screen ( Default_2, 20, 41, 2 ) 0070 c 0071 Return 0072 End DISPLAY_ADD_SCORE_DEFAULTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 165 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 288 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 38 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 212 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1158 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_ADD_SCORE_DEFAULTS VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT AP-00000004@ CHAR DEFAULT_1 AP-00000008@ CHAR DEFAULT_2 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME ** I*4 I 2-00000000 I*4 J ** I*4 K ** I*4 L 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name LIB$ERASE_LINE I*4 LIB$INDEX LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 166 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 167 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Add_Defaults 0004 c 0005 Include 'Student.Rec' 0046 c 0047 Call Lib$Erase_Line ( 9, 1 ) 0048 Call Lib$Erase_Line ( 11, 1 ) 0049 Call Lib$Put_Screen ( Last_Name, 11, 1, 2 ) 0050 Call Lib$Put_Screen ( First_Name, 11, 31, 2 ) 0051 Call Lib$Put_Screen ( Student_Number, 11, 61, 2 ) 0052 c 0053 Call Lib$Erase_Line ( 16, 1 ) 0054 Call Lib$Erase_Line ( 18, 1 ) 0055 Call Lib$Put_Screen ( Department_Name, 18, 1, 2 ) 0056 Call Lib$Put_Screen ( Comment, 18, 31, 2 ) 0057 c 0058 Return 0059 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 85 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 32 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 188 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 RECORD 620 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 925 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_ADD_DEFAULTS VARIABLES Address Type Name Address Type Name 3-00000264 R*4 AVERAGE_GRADE 3-00000050 CHAR COMMENT 3-0000003C CHAR DEPARTMENT_NAME 3-00000014 CHAR FIRST_NAME 3-00000000 CHAR LAST_NAME 3-00000268 CHAR LETTER_GRADE 3-00000028 CHAR STUDENT_NUMBER DISPLAY_ADD_DEFAULTS 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 168 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-00000258 R*4 AVERAGE_NEEDED 12 (3) 3-00000000 L*1 STUDENT_RECORD 620 (620) 3-00000064 CHAR TEST_COMMENTS 400 (20) 3-000001F4 L*1 TEST_DROPPED 20 (20) 3-00000208 R*4 TEST_SCORE 80 (20) FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_LINE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 169 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 170 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Add_Grades_Screen 0004 c 0005 Character*1 So / 14 /, Si / 15 / 0006 c 0007 Call Lib$Erase_Page ( 16, 1 ) 0008 Call Lib$Put_Screen ( So // 'oooooooooo' // Si, 18, 21, 1 ) 0009 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0010 1 18, 41, 1 ) 0011 c 0012 Return 0013 End DISPLAY_ADD_GRADES_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 171 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 100 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 50 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 64 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 214 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_ADD_GRADES_SCREEN VARIABLES Address Type Name Address Type Name 2-00000001 CHAR SI 2-00000000 CHAR SO FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 172 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 0002 Subroutine Draw_Menu_Header ( Screen_Name, Row ) 0003 c 0004 Character*(*) Screen_Name 0005 Character*1 So / 14 /, Si / 15 / 0006 c 0007 Integer Row 0008 c 0009 I = Len ( Screen_Name ) 0010 c 0011 Call Lib$Erase_Page ( 1, 1 ) 0012 Call Lib$Put_Screen ( So // 0013 1 'lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk' // Si, 0014 1 Row, 21, 1 ) 0015 c 0016 Do K = ( Row + 1 ), ( Row + 3 ) 0017 Call Lib$Put_Screen ( So // 'x' // Si, K, 21, 1 ) 0018 If ( K .eq. ( Row + 2 ) ) Then 0019 Call Lib$Put_Screen ( Screen_Name, K, 0020 1 ( ( 82 - I ) / 2 ), 1 ) 0021 End If 0022 Call Lib$Put_Screen ( So // 'x' // Si, K, 60, 1 ) 0023 End Do 0024 c 0025 Call Lib$Put_Screen ( So // 0026 1 'mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj' // Si, 0027 1 Row + 4, 21, 1 ) 0028 c 0029 Return 0030 End DRAW_MENU_HEADER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 173 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 260 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 92 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 116 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 468 ENTRY POINTS Address Type Name 0-00000000 DRAW_MENU_HEADER VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name ** I*4 I 2-00000004 I*4 K AP-00000008@ I*4 ROW AP-00000004@ CHAR SCREEN_NAME 2-00000001 CHAR SI 2-00000000 CHAR SO FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 174 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 175 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Menu_Body ( Start, End ) 0004 c 0005 Integer Start, End 0006 c 0007 Character*1 So / 14 /, Si / 15 / 0008 c 0009 Call Lib$Erase_Page ( Start, 1 ) 0010 c 0011 Call Lib$Put_Screen ( So // 't' // Si, Start - 1, 21, 1 ) 0012 Call Lib$Put_Screen ( So // 'u' // Si, Start - 1, 60, 1 ) 0013 c 0014 Do I = Start, ( End - 1 ) 0015 Call Lib$Put_Screen ( So // 'x' // Si, I, 21, 1 ) 0016 Call Lib$Put_Screen ( So // 'x' // Si, I, 60, 1 ) 0017 End Do 0018 c 0019 Call Lib$Put_Screen ( So // 0020 1 'mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj' // Si, 0021 1 End, 21, 1 ) 0022 c 0023 Return 0024 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 254 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 52 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 112 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 418 ENTRY POINTS Address Type Name 0-00000000 DRAW_MENU_BODY VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000008@ I*4 END 2-00000004 I*4 I 2-00000001 CHAR SI 2-00000000 CHAR SO AP-00000004@ I*4 START DRAW_MENU_BODY 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 176 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 177 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 178 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Menu_Trailer ( Begin, End ) 0004 c 0005 Integer Begin, End 0006 c 0007 Character*1 So / 14 /, Si / 15 / 0008 c 0009 Call Lib$Erase_Page ( Begin ) 0010 c 0011 Call Lib$Put_Screen ( So // 't' // Si, Begin - 1, 21, 1 ) 0012 Call Lib$Put_Screen ( So // 'u' // Si, Begin - 1, 60, 1 ) 0013 c 0014 Do I = Begin, End - 1 0015 Call Lib$Put_Screen ( So // 'x' // Si, I, 21, 1 ) 0016 Call Lib$Put_Screen ( So // 'x' // Si, I, 60, 1 ) 0017 End Do 0018 c 0019 Call Lib$Put_Screen ( So // 0020 1 'mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj' // Si, 0021 1 End, 21, 1 ) 0022 c 0023 Return 0024 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 254 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 52 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 108 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 414 ENTRY POINTS Address Type Name 0-00000000 DRAW_MENU_TRAILER VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name AP-00000004@ I*4 BEGIN AP-00000008@ I*4 END 2-00000004 I*4 I 2-00000001 CHAR SI 2-00000000 CHAR SO DRAW_MENU_TRAILER 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 179 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 180 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 181 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Display_Screen 0004 c 0005 Call Draw_Menu_Body ( 6, 19 ) 0006 Call Draw_Menu_Trailer ( 20, 23 ) 0007 c 0008 Call Lib$Put_Screen ( 'B = Brief Score Listing', 7, 31, 0 ) 0009 Call Lib$Put_Screen ( 'F = Full Score Listing', 9, 31, 0 ) 0010 Call Lib$Put_Screen ( 'M = Manager Listing', 11, 31, 0 ) 0011 Call Lib$Put_Screen ( 'O = One Student Listing',13, 31, 0 ) 0012 Call Lib$Put_Screen ( 'R = Student Roster', 15, 31, 0 ) 0013 Call Lib$Put_Screen ( 'S = Score Sheet', 17, 31, 0 ) 0014 c 0015 Return 0016 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 75 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 174 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 192 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 441 ENTRY POINTS Address Type Name 0-00000000 DRAW_DISPLAY_SCREEN FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 182 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 183 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Modify_Screen 0004 c 0005 Call Draw_Menu_Body ( 6, 19 ) 0006 Call Draw_Menu_Trailer ( 20, 23 ) 0007 c 0008 Call Lib$Put_Screen ( 'C = Student Comment', 7, 31, 0 ) 0009 Call Lib$Put_Screen ( 'D = Department Name', 9, 31, 0 ) 0010 Call Lib$Put_Screen ( 'L = Letter Grade', 11, 31, 0 ) 0011 Call Lib$Put_Screen ( 'N = Student Number', 13, 31, 0 ) 0012 Call Lib$Put_Screen ( 'S = Test Scores', 15, 31, 0 ) 0013 Call Lib$Put_Screen ( 'T = Test Comments', 17, 31, 0 ) 0014 c 0015 Return 0016 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 75 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 158 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 192 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 425 ENTRY POINTS Address Type Name 0-00000000 DRAW_MODIFY_SCREEN FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 184 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 185 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Modify_Menu 0004 c 0005 Call Draw_Menu_Header ( 'Modify Menu', 5 ) 0006 Call Draw_Menu_Body ( 10, 15 ) 0007 Call Draw_Menu_Trailer ( 16, 19 ) 0008 c 0009 Call Lib$Put_Screen ( 'A = Add Grades', 11, 33, 0 ) 0010 Call Lib$Put_Screen ( 'C = Change A Record', 13, 33, 0 ) 0011 c 0012 Return 0013 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 50 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 84 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 100 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 234 ENTRY POINTS Address Type Name 0-00000000 DRAW_MODIFY_MENU FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_HEADER DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 186 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 187 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Select_Sort_Menu 0004 c 0005 Call Draw_Menu_Body ( 6, 15 ) 0006 Call Draw_Menu_Trailer ( 16, 19 ) 0007 c 0008 Call Lib$Put_Screen ( 'Sort by', 7, 35, 1 ) 0009 Call Lib$Put_Screen ( 'D = Department', 9, 33, 0 ) 0010 Call Lib$Put_Screen ( 'N = Name', 11, 33, 0 ) 0011 Call Lib$Put_Screen ( 'S = Number', 13, 33, 0 ) 0012 c 0013 Return 0014 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 57 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 91 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 136 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 284 ENTRY POINTS Address Type Name 0-00000000 SELECT_SORT_MENU FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 188 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 189 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Select_Menu ( Menu_Name ) 0004 c 0005 Character Menu_Name*(*) 0006 c 0007 I = Len ( Menu_Name ) 0008 c 0009 Call Draw_Menu_Header ( Menu_Name, 3 ) 0010 Call Draw_Menu_Body ( 8, 17 ) 0011 Call Draw_Menu_Trailer ( 18, 21 ) 0012 c 0013 Call Lib$Put_Screen ( 'Select by', 9, 35, 1 ) 0014 Call Lib$Put_Screen ( 'D = Department', 11, 33, 0 ) 0015 Call Lib$Put_Screen ( 'N = Name', 13, 33, 0 ) 0016 Call Lib$Put_Screen ( 'S = Number', 15, 33, 0 ) 0017 c 0018 Return 0019 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 78 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 98 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 156 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 332 ENTRY POINTS Address Type Name 0-00000000 DRAW_SELECT_MENU VARIABLES Address Type Name Address Type Name ** I*4 I AP-00000004@ CHAR MENU_NAME FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_HEADER DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 190 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 191 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Add_Screen 0004 c 0005 Character*1 So / 14 /, Si / 15 / 0006 c 0007 Call Lib$Erase_Page ( 1, 1 ) 0008 Call Lib$Put_Screen ( So // 'lqqqqqqqqqqqqqqqqqqqqqqw' // Si, 0009 1 1, 5, 1 ) 0010 Call Lib$Put_Screen ( So // 'x' // Si, 2, 5, 1 ) 0011 Call Lib$Put_Screen ( So // 'x' // Si, 2, 28, 1 ) 0012 Call Lib$Put_Screen ( So // 'x' // Si, 3, 5, 1 ) 0013 Call Lib$Put_Screen ( 'Add Students', 3, 10, 1 ) 0014 Call Lib$Put_Screen ( So // 'x' // Si, 3, 28, 1 ) 0015 Call Lib$Put_Screen ( So // 'x' // Si, 4, 5, 1 ) 0016 Call Lib$Put_Screen ( So // 'x' // Si, 4, 28, 1 ) 0017 Call Lib$Put_Screen ( So // 'mqqqqqqqqqqqqqqqqqqqqqqv' // Si, 0018 1 5, 5, 1 ) 0019 Call Lib$Put_Screen ( So // 'qqqqqqqqqqqqqqqqqqqqqqqw' // Si, 0020 1 1, 29, 1 ) 0021 Call Lib$Put_Screen ( So // 'x' // Si, 2, 52, 1 ) 0022 Call Lib$Put_Screen ( 'C = Cancel D = Done', 0023 1 3, 30, 0 ) 0024 Call Lib$Put_Screen ( So // 'x' // Si, 3, 52, 1 ) 0025 Call Lib$Put_Screen ( So // 'x' // Si, 4, 52, 1 ) 0026 Call Lib$Put_Screen ( So // 'qqqqqqqqqqqqqqqqqqqqqqqv' // Si, 0027 1 5, 29, 1 ) 0028 Call Lib$Put_Screen ( So // 'qqqqqqqqqqqqqqqqqqqqqqqk' // Si, 0029 1 1, 53, 1 ) 0030 Call Lib$Put_Screen ( So // 'x' // Si, 2, 76, 1 ) 0031 Call Lib$Put_Screen ( So // 'x' // Si, 3, 76, 1 ) 0032 Call Lib$Put_Screen ( So // 'x' // Si, 4, 76, 1 ) 0033 Call Lib$Put_Screen ( So // 'qqqqqqqqqqqqqqqqqqqqqqqj' // Si, 0034 1 5, 53, 1 ) 0035 c 0036 Call Lib$Put_Screen ( 'Last Name', 7, 6, 1 ) 0037 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0038 1 10, 1, 1 ) 0039 Call Lib$Put_Screen ( 'First Name', 7, 36, 1 ) 0040 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0041 1 10, 31, 1 ) 0042 Call Lib$Put_Screen ( 'Student Number', 7, 64, 1 ) 0043 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0044 1 10, 61, 1 ) 0045 Call Lib$Put_Screen ( 'Department', 14, 6, 1 ) 0046 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0047 1 17, 1, 1 ) 0048 Call Lib$Put_Screen ( 'Comment', 14, 37, 1 ) 0049 Call Lib$Put_Screen ( So // 'oooooooooooooooooooo' // Si, 0050 1 17, 31, 1 ) 0051 c 0052 Return 0053 End DRAW_ADD_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 192 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1000 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 343 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 680 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 2023 ENTRY POINTS Address Type Name 0-00000000 DRAW_ADD_SCREEN VARIABLES Address Type Name Address Type Name 2-00000001 CHAR SI 2-00000000 CHAR SO FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$ERASE_PAGE LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 193 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 194 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 Subroutine Draw_Manager_Menu 0003 c 0004 Call Draw_Menu_Header ( 'Managment Menu', 3 ) 0005 Call Draw_Menu_Body ( 8, 19 ) 0006 Call Draw_Menu_Trailer ( 20, 23 ) 0007 c 0008 Call Lib$Put_Screen ( 'A = Add Test Weights', 9, 30, 0 ) 0009 Call Lib$Put_Screen ( 'B = Build a Flat File', 11, 30, 0 ) 0010 Call Lib$Put_Screen ( 'C = Change Test Weights', 13, 30, 0 ) 0011 Call Lib$Put_Screen ( 'L = Load From a Flat File', 15, 30, 0 ) 0012 Call Lib$Put_Screen ( 'N = Change Number of Tests', 17, 30, 0 ) 0013 c 0014 Return 0015 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 76 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 183 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 184 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 443 ENTRY POINTS Address Type Name 0-00000000 DRAW_MANAGER_MENU FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_HEADER DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 195 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 196 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Draw_Update_Menu 0004 c 0005 Call Draw_Menu_Header ( 'Update Menu', 3 ) 0006 Call Draw_Menu_Body ( 8, 17 ) 0007 Call Draw_Menu_Trailer ( 18, 21 ) 0008 c 0009 Call Lib$Put_Screen ( 'A = Add', 9, 36, 0 ) 0010 Call Lib$Put_Screen ( 'D = Delete', 11, 36, 0 ) 0011 Call Lib$Put_Screen ( 'M = Modify', 13, 36, 0 ) 0012 Call Lib$Put_Screen ( 'R = Rename', 15, 36, 0 ) 0013 c 0014 Return 0015 End DRAW_UPDATE_MENU 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 197 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 67 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 98 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 156 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 321 ENTRY POINTS Address Type Name 0-00000000 DRAW_UPDATE_MENU FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_HEADER DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 198 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 0002 Subroutine Draw_Main_Menu 0003 c 0004 Call Draw_Menu_Header ( 'Main Menu', 4 ) 0005 Call Draw_Menu_Body ( 9, 18 ) 0006 Call Draw_Menu_Trailer ( 19, 22 ) 0007 c 0008 Call Lib$Put_Screen ( 'D = Display', 10, 34, 0 ) 0009 Call Lib$Put_Screen ( 'C = Calculate', 12, 34, 0 ) 0010 Call Lib$Put_Screen ( 'M = Management', 14, 34, 0 ) 0011 Call Lib$Put_Screen ( 'U = Update', 16, 34, 0 ) 0012 c 0013 Return 0014 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 67 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 107 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 156 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 330 ENTRY POINTS Address Type Name 0-00000000 DRAW_MAIN_MENU FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DRAW_MENU_BODY DRAW_MENU_HEADER DRAW_MENU_TRAILER LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 199 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 200 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Select_Option ( Possible_Options, 0004 1 Option, 0005 1 Length, 0006 1 Row, 0007 1 Column, 0008 1 Flag ) 0009 c 0010 Character Possible_Options*(*), Option*(*) 0011 c 0012 Integer Length, Row, Column, Flag 0013 c 0014 Do While ( ( Index ( Possible_Options, Option ) .eq. 0 ) .and. 0015 1 ( Length .gt. 0 ) ) 0016 c 0017 Call Display_Prompt( Row, Column, Flag ) 0018 Call Get_Option( Option, Length ) 0019 c 0020 End Do 0021 c 0022 Return 0023 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 89 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 56 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 145 ENTRY POINTS Address Type Name 0-00000000 SELECT_OPTION VARIABLES Address Type Name Address Type Name AP-00000014@ I*4 COLUMN AP-00000018@ I*4 FLAG AP-0000000C@ I*4 LENGTH AP-00000008@ CHAR OPTION AP-00000004@ CHAR POSSIBLE_OPTIONS AP-00000010@ I*4 ROW SELECT_OPTION 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 201 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name DISPLAY_PROMPT GET_OPTION I*4 LIB$INDEX 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 202 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 203 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Display_Prompt ( Line, Column, Flag ) 0004 c 0005 Integer Line, Column, Flag 0006 c 0007 Call Lib$Put_Screen ( ' ', Line, Column + 14, Flag ) 0008 Call Lib$Put_Screen ( 'Enter option: ', Line, Column, Flag ) 0009 c 0010 Return 0011 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 63 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 19 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 56 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 138 ENTRY POINTS Address Type Name 0-00000000 DISPLAY_PROMPT VARIABLES Address Type Name Address Type Name Address Type Name AP-00000008@ I*4 COLUMN AP-0000000C@ I*4 FLAG AP-00000004@ I*4 LINE FUNCTIONS AND SUBROUTINES REFERENCED Type Name LIB$PUT_SCREEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 204 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 205 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Subroutine Get_Option ( Option, Length ) 0004 c 0005 Character Option*(*) 0006 c 0007 Call Lib$Get_Screen( Option, , Length ) 0008 Call Str$UpCase ( Option, Option ) 0009 c 0010 Return 0011 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 42 PIC CON REL LCL SHR EXE RD NOWRT LONG 2 $LOCAL 36 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 78 ENTRY POINTS Address Type Name 0-00000000 GET_OPTION VARIABLES Address Type Name Address Type Name AP-00000008@ I*4 LENGTH AP-00000004@ CHAR OPTION FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name LIB$GET_SCREEN STR$UPCASE 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 206 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 207 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0002 0003 Integer Function Student_File_Open( Lun ) 0004 c 0005 Parameter Maximum_Tests = 20 0006 Parameter Data_File_Lun = 1 0007 c 0008 Include 'Manager.Rec' 0051 c 0052 Character*255 File_Name 0053 Character*1 Cr / 13 /, Lf / 10 /, Escape / 27 / 0054 Character*1 Null / 0 / 0055 c 0056 Integer Lun, Name_Length, Status 0057 c 0058 Call Lib$Erase_Page ( 1, 1 ) 0059 Call Lib$Put_Screen ( Escape // '(B' // Escape // ')0', 23, 1, 0 ) 0060 Istat = Lib$Get_Screen ( File_Name, Cr // Lf // 0061 1 'Student data file name: ', 0062 1 Name_Length ) 0063 c 0064 If ( Istat ) then 0065 c 0066 Open ( Unit = Lun, 0067 1 File = File_Name, 0068 1 DefaultFile = 'Class.Dat', 0069 1 Status = 'Unknown', 0070 1 Organization = 'Indexed', 0071 1 Access = 'Keyed', 0072 1 Form = 'Unformatted', 0073 1 RecL = 155, 0074 1 Key = ( 1: 40: Character, 0075 1 41: 60: Character, 0076 1 61: 80: Character ), 0077 1 IoStat = Status, 0078 1 Err = 200 ) 0079 c 0080 Student_File_Open = .True. 0081 c 0082 Read ( Lun, 0083 1 Key = Null, 0084 1 KeyId = 0, 0085 1 IoStat = Ios, 0086 1 Err = 300 ) Manager_Record 0087 c 0088 Else 0089 Student_File_Open = .False. 0090 End If 0091 c 0092 Return 0093 c 0094 200 Continue 0095 c 0096 IStat = Mrk$_ErrRec( '%GRADE-F', Status, ' ' ) 0097 Student_File_Open = .False. 0098 Return 0099 c 0100 300 Continue STUDENT_FILE_OPEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 208 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0101 c 0102 Call Lib$Erase_Page ( 1, 1 ) 0103 Call Lib$Put_Screen ( 'GRADE', 8, 37, 9 ) 0104 Call Lib$Put_Screen ( 'Version 1.4 -- 07-JAN-1985', 10, 26, 9 ) 0105 Call Lib$Put_Screen ( 'from', 12, 38, 9 ) 0106 Call Lib$Put_Screen ( 'The University of Alabama at Birmingham', 0107 1 14, 20, 9 ) 0108 Call Lib$Put_Screen ( ' Creating new file... ', 23, 29, 6 ) 0109 c 0110 Do I = 1, 368 0111 Manager_Record( I ) = 0 0112 End Do 0113 Do I = 369, 528 0114 Manager_Record( I ) = 32 0115 End Do 0116 Write ( Lun ) Manager_Record 0117 Return 0118 c 0119 End PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 332 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 204 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 644 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 MANAGER 528 PIC OVR REL GBL SHR NOEXE RD WRT LONG Total Space Allocated 1708 ENTRY POINTS Address Type Name 0-00000000 I*4 STUDENT_FILE_OPEN VARIABLES Address Type Name Address Type Name 2-000000FF CHAR CR 2-00000101 CHAR ESCAPE 2-00000000 CHAR FILE_NAME ** I*4 I ** I*4 IOS ** I*4 ISTAT 2-00000100 CHAR LF AP-00000004@ I*4 LUN 3-000000C8 R*4 MANAGER_AVERAGE_GRADE 3-00000000 CHAR MANAGER_KEY_0 3-00000028 CHAR MANAGER_KEY_1 3-0000003C CHAR MANAGER_KEY_2 3-000000CC I*4 MANAGER_NUM_TESTS 2-00000108 I*4 NAME_LENGTH 2-00000102 CHAR NULL 2-0000010C I*4 STATUS STUDENT_FILE_OPEN 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 209 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 ARRAYS Address Type Name Bytes Dimensions 3-000000B4 I*4 MANAGER_COUNTS 20 (5) 3-00000050 L*1 MANAGER_DROPPED 20 (20) 3-00000000 L*1 MANAGER_RECORD 508 (508) 3-000000D0 R*4 MANAGER_SCALE 80 (20) 3-00000120 R*4 MANAGER_SCORE_AVERAGE 80 (20) 3-00000170 CHAR MANAGER_TEST_NAME 160 (20) 3-00000064 R*4 MANAGER_WEIGHTS 80 (20) LABELS Address Label Address Label 0-00000138 200 0-000000B4 300 FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name FOR$OPEN LIB$ERASE_PAGE I*4 LIB$GET_SCREEN LIB$PUT_SCREEN I*4 MRK$_ERRREC 16-May-1985 09:58:59 VAX FORTRAN V4.1-45 Page 210 19-Mar-1985 17:01:27 UD0:[VEVLE.SOURCE.UAB.GRADE]GRADE.FOR;39 0001 COMMAND QUALIFIERS FOR/NODEBUG GRADE,MRKERRREC /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW) /DEBUG=(NOSYMBOLS,NOTRACEBACK) /STANDARD=(NOSYNTAX,NOSOURCE_FORM) /SHOW=(NOPREPROCESSOR,NOINCLUDE,MAP,NODICTIONARY,SINGLE) /WARNINGS=(GENERAL,NODECLARATIONS) /CONTINUATIONS=19 /NOCROSS_REFERENCE /NOD_LINES /NOEXTEND_SOURCE /F77 /NOG_FLOATING /I4 /NOMACHINE_CODE /OPTIMIZE COMPILATION STATISTICS Run Time: 128.22 seconds Elapsed Time: 232.29 seconds Page Faults: 382 Dynamic Memory: 341 pages