Advertisement
CodenameDuchess

prog6.2

Jul 22nd, 2014
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.43 KB | None | 0 0
  1. //KC03O10M JOB ,'MATTHEW ROWE' ,MSGCLASS=H 00010000
  2. //STEP1 EXEC PGM=ASSIST 00020000
  3. //STEPLIB DD DSN=KC02293.ASSIST.LOADLIB,DISP=SHR 00030000
  4. //SYSPRINT DD SYSOUT=* 00040000
  5. //SYSIN DD * 00050000
  6. ********************************************************************** 00060000
  7. * ASSIGNMENT 6 00070000
  8. * NAME: MATTHEW ROWE 00080000
  9. * FUNCTION: USE INTERNAL SUBROUTINES TO LOAD A TABLE READ FROM FILE 00090000
  10. * PRINT THE VALUES IN LINES OF 5 AND THEN PRINT ALL EVEN 00100000
  11. * ENTRIES IN THE SAME FASHION 00110000
  12. * 00111000
  13. * INPUT: FT05F001 00120000
  14. * OUTPUT: STDOUT INDIVIDUAL PAY RECORDS PER EMPLOYEE AS WELL AS TOTALS 00130000
  15. * ENTRY CONDS: NONE 00140000
  16. * EXIT CONDS: NONE 00150000
  17. * REGISTERS: R12--BASE REGISTER 00160000
  18. * R1---PARAMETER LISTS FOR SUBROUTINES 00170000
  19. * R14--LINK BACK TO MAIN FORWARD POINTER 00180000
  20. * R15--LINK TO SUB FRORWARD POINTER 00190000
  21. * PSEUDOCODE: <1> LOAD PARAMS AND BRANCH TO BUILD SUB 00210000
  22. * <2> LOAD PARAMS AND BRANCH TO PRINT SUB 00211000
  23. * <3> LOAD PARAMS AND BRANCH TO SORT SUB 00220000
  24. * <4> LOAD PARAMS AND BRANCH TO PRINT SUB 00230000
  25. * FOR SORTED, MULTIPLES OF 6;5; AND 4 00240000
  26. *********************************************************************** 00270000
  27. TITLE 'MATTHEW ROWE, CSCI 360, PROGRAM6' 00271000
  28. SPACE 3 00272000
  29. PROG6 CSECT 00280010
  30. STM 14,12,12(13) 00280100
  31. LR 12,15 00280200
  32. USING PROG6,12 00281009
  33. LA 14,MAINSAVE 00281100
  34. ST 14,8(13) 00281200
  35. ST 13,4(14) 00281300
  36. LR 13,14 00281400
  37. *********CALL BUILD**************************************************** 00281600
  38. LA 1,BPARMS 00281700
  39. L 15,=V(BUILD) 00281800
  40. BALR 14,15 00281900
  41. *********CALL PRINT1*************************************************** 00282000
  42. LA 1,P1PAR 00282711
  43. L 15,=V(PRINT) 00282811
  44. BALR 14,15 00282911
  45. *********CALL SORT***************************************************** 00283000
  46. * LA 1,SORTPL 00283100
  47. * L 15,=V(SORT) 00283200
  48. * BALR 14,15 00283300
  49. *********CALL PRINT2*************************************************** 00283400
  50. LA 1,P2PAR 00283811
  51. L 15,=V(PRINT) 00283911
  52. BALR 14,15 00284011
  53. *********CALL TALLY**************************************************** 00284100
  54. * LA 1,TALLPL 00284511
  55. * L 15,=V(TALLY) 00284600
  56. * BALR 14,15 00284700
  57. XDUMP TABLE,ENDTBLE-TABLE 00286209
  58. L 13,4(13) 00286309
  59. LM 14,12,12(13) 00286409
  60. BR 14 00286509
  61. *************CONSTANTS/PARAM LISTS/LABELS*********************** 00286600
  62. EJECT 00286700
  63. SPACE 3 00286800
  64. LTORG 00286900
  65. ORG PROG6+(*-PROG6+15)/16*16 00287009
  66. MAINSAVE DS 18F 00287100
  67. TABLE DC 70CL10' ' TABLE FIRST NAME D=0 00287200
  68. DC 70CL10' ' LAST NAME D=10 00287300
  69. DC 70CL9' ' ID NUMBER D=20 00287400
  70. DC 70CL8' ' PASSWORD D=29 00287500
  71. DC 70PL5'000000000' BALANCE D=37 00287600
  72. DC 70PL5'000000000' EXPIRATION DATE D=42 00287700
  73. DC 70CL1' ' FILLER D=47 00287800
  74. ENDTBLE DS 0H 00288000
  75. LASTREC DS 1F POINTER FOR LAST RECORD ENTERED 00288107
  76. NUMENT DS 1F NUMBER OF ENTRIES 00289000
  77. FIRST DC C'1' PRINT HEADER INDICATOR 00289111
  78. SECOND DC C'2' PRINT HEADER INDICATOR 00289211
  79. BPARMS DC A(TABLE) BUILD PARAMETERS 00289500
  80. DC A(LASTREC) 00289600
  81. DC A(NUMENT) 00289700
  82. P1PAR DC A(TABLE) BEFORE SORT PRINT PARAM LIST 00289811
  83. DC A(LASTREC) 00289911
  84. DC A(FIRST) 00290011
  85. P2PAR DC A(TABLE) AFTER SORT PARAM LIST 00291011
  86. DC A(LASTREC) 00291111
  87. DC A(SECOND) 00291211
  88. TALLPL DC A(TABLE) TALLY PARAM LIST 00291311
  89. DC A(LASTREC) 00291411
  90. DC A(NUMENT) 00291511
  91. *************END CONSTANTS/PARAM LISTS/LABELS******************* 00291700
  92. *************BUILD SUBROUTINE*********************************** 00291800
  93. * FUNCTION: FILL TABLE WITH VALUES FROM FILE 00291900
  94. * REGISTERS: R1---PARAM LIST 00292006
  95. * R2---TABLE POITNER 00292106
  96. * R3---EOT POINTER/LAST ENTRY POINTER 00292206
  97. * R4---TOTAL ENTRY FOR TABLE 00292306
  98. * R6---COUNTER OF VALUES IN TABLE 00292406
  99. * R14--RETURN MAIN 00292606
  100. * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST 00292700
  101. * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF 00292800
  102. * <3>READ AND STORE VALUES 00292906
  103. * <4>MULTIPLY BALANCE BY -1 IF NECESSARY 00293006
  104. * LOOP BACK TO <2> TIL EOF/TABLE FULL 00293100
  105. **************************************************************** 00293200
  106. EJECT 00293300
  107. SPACE 3 00293400
  108. BUILD CSECT 00293500
  109. STM 14,12,12(13) STORE REGISTERS 00293600
  110. LR 12,15 LOAD PARAM LIST 00293700
  111. USING BUILD,12 00293800
  112. LA 14,BUILDST 00293900
  113. ST 14,8(13) 00294000
  114. ST 13,4(14) 00294100
  115. LR 13,14 00294200
  116. LM 2,4,0(1) UNLOAD PARAM LIST 00294300
  117. SR 6,6 INITIALIZE COUNTER 00294400
  118. LOOPT XREAD CARD,80 READ IN FILE 00294503
  119. BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH 00294600
  120. C 6,=F'70' CHECK FOR EOT 00294700
  121. BC B'1000',LOOPE IF TRUE GO TO END LOOP 00294800
  122. MVC 0(10,2),CARD+12 FIRST NAME 00294900
  123. MVC 10(10,2),CARD LAST NAME 00295000
  124. MVC 20(10,2),CARD+24 ID 00295100
  125. MVC 29(10,2),CARD+35 PASSWORD 00295200
  126. PACK 37(5,2),CARD+55(7) BALANCE 00295300
  127. PACK 42(5,2),CARD+45(8) EXPIRATION DATE 00295400
  128. A 6,=F'1' INCREMENT 00295600
  129. CLI CARD+62,C'-' SIGN COMPARISON 00295704
  130. BE MINUS IF IS A MINUS BRANCH 00295800
  131. LA 2,48(0,2) ADVANCE TABLE POINTER 00295905
  132. B LOOPT 00296000
  133. MINUS MP 37(5,2),=P'-1' AND MULTIPLY BY -1 00296100
  134. LA 2,48(0,2) ADVANCE TABLE POINTER 00296205
  135. B LOOPT BRANCH TO LOOP TOP 00297000
  136. LOOPE ST 6,0(0,4) LOOP END 00297900
  137. ST 2,0(3) STORE LAST TABLE ADDRESS AT LASTREC 00298008
  138. L 13,4(13) 00298108
  139. LM 14,12,12(13) EXIT LINKAGE 00298208
  140. BR 14 BRANCH TO MAIN 00298308
  141. LTORG 00299000
  142. BUILDST DS 18F 00300400
  143. CARD DS 80C FOR READING RECORDS 00300501
  144. DC C'*' 00300600
  145. *************END BUILD SUBROUTINE******************************* 00300700
  146. *************PRINT SUBROUTINE*********************************** 00300800
  147. * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE 00300900
  148. * REGISTERS: R1---PARAM LIST 00301000
  149. * R3---TABLE POITNER 00301100
  150. * R4---EOT POINTER/LAST ENTRY POINTER 00301200
  151. * R5---VALUE OF D 00301300
  152. * R6---VALUE OF H 00301400
  153. * R7---VALUE PER LINE COUNTER 00301500
  154. * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION 00301600
  155. * R10--TABLE VALUE STORED FOR XPRNT 00301700
  156. * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS 00302100
  157. * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT 00302200
  158. * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM 00302300
  159. * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2> 00302400
  160. * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H 00302500
  161. * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP 00302600
  162. * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT 00302700
  163. * REMAINING VALUES 00302800
  164. * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN 00302900
  165. **************************************************************** 00303800
  166. EJECT 00303900
  167. SPACE 3 00304000
  168. PRINT CSECT 00304100
  169. STM 14,12,12(13) STORE REGISTERS 00304200
  170. LR 12,15 00304300
  171. USING PRINT,12 00304500
  172. LA 14,PRINTST 00304600
  173. ST 14,8(13) 00304700
  174. ST 13,4(14) 00304800
  175. LR 13,14 00304900
  176. LM 2,4,0(1) LOAD PARAM LIST 00305009
  177. L 4,0(0,4) 00305116
  178. ST 4,HEADVAL 00305216
  179. CLI HEADVAL,C'2' CHECK HEADER ARGUMENT 00305315
  180. BE HEADER2 00305411
  181. XPRNT HEAD,120 00305511
  182. MVI HEAD+1,C' ' 00305611
  183. MVC HEAD+2(118),HEAD+1 00305711
  184. XPRNT FILLER,120 00305811
  185. MVI FILLER+1,C' ' 00305911
  186. MVC FILLER+2(118),FILLER+1 00306011
  187. SR 7,7 INITIALIZE ENTRY/PG COUNTER 00306111
  188. MVI LINE+1,C' ' DESTRUCTIVE OVERLAP 00306200
  189. MVC LINE+2(118),LINE+1 CLEAR LINES 00306311
  190. LOOPTOP CR 2,3 TEST FOR EOT 00306411
  191. BC B'1000',LOOPBOT IF TRUE END 00306500
  192. MVC 0(10,2),FNAME PUT FIRST NAME IN FNAME 00306613
  193. MVC 10(10,2),LNAME PUT LAST NAME IN LNAME 00306713
  194. MVC 37(5,2),ENDBAL PUT BALANCE IN END BAL 00306813
  195. CP ENDBAL,COMPPK 00306917
  196. BNH NEGBAL 00307011
  197. MVC BAL(13),=XL13'4020202021204B202040404040' 00307111
  198. EDMK BAL(13),ENDBAL 00307211
  199. BCTR 1,0 00307311
  200. MVI 0(1),C'$' 00307411
  201. MVC 29(8,2),PASS PUT PASSWORD IN PASS 00308013
  202. MVC 42(5,2),EXDAT PUT EXPIRATION DATE IN EXDAT 00308113
  203. MVC EXPD(11),=XL11'4020202020612020612020' 00309011
  204. ED EXPD(11),EXDAT 00309111
  205. MVC 20(9,2),IDNUM PUT ID NUMBER IN IDNUM 00310013
  206. XPRNT LINE,120 PRINT VALS 00317111
  207. MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00317200
  208. MVC LINE+2(118),LINE+1 00317311
  209. A 2,48(0,2) ADVANCE POINTER 00317411
  210. A 7,=F'1' 00317511
  211. C 7,=F'24' 00317611
  212. B LOOPTOP 00317711
  213. NEGBAL DS 0H 00317811
  214. MVC BAL(13),=XL13'4020206B2021204B202040C3D9' 00317911
  215. EDMK BAL(13),ENDBAL 00318011
  216. BCTR 1,0 00318111
  217. MVI 0(1),C'$' 00318211
  218. MVC 29(8,2),PASS PUT PASSWORD IN PASS 00318313
  219. MVC 42(5,2),EXDAT PUT EXPIRATION DATE IN EXDAT 00318413
  220. MVC EXPD(11),=XL11'4020202020612020612020' 00318511
  221. ED EXPD(11),EXDAT 00318611
  222. MVC 20(9,2),IDNUM PUT ID NUMBER IN IDNUM 00318713
  223. XPRNT LINE,120 PRINT VALS 00318811
  224. MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00318911
  225. MVC LINE+2(118),LINE+1 00319011
  226. A 2,48(0,2) ADVANCE POINTER 00319111
  227. A 7,=F'1' 00319211
  228. C 7,=F'24' 00319311
  229. B LOOPTOP 00319411
  230. NEWPG SR 7,7 00319511
  231. CLI HEADVAL,C'2' 00319615
  232. BE HEADER2 00319711
  233. XPRNT HEAD,120 00319811
  234. MVI HEAD+1,C' ' 00319911
  235. MVC HEAD+2(118),HEAD+1 00320011
  236. B LOOPTOP START NEXT LINE 00320100
  237. HEADER2 XPRNT HEAD2,120 00320211
  238. MVI HEAD2+1,C' ' 00320311
  239. MVC HEAD2+2(118),HEAD2+1 00320411
  240. XPRNT FILLER,120 00320511
  241. MVI FILLER+1,C' ' 00320611
  242. MVC FILLER+2(118),FILLER+1 00320711
  243. B LOOPTOP 00320811
  244. LOOPBOT DS 0H 00320900
  245. XPRNT LINE,120 PRINT VALS 00321011
  246. L 13,4(13) 00321100
  247. LM 14,12,12(13) EXIT LINKAGE 00321200
  248. BR 14 BRANCH TO MAIN 00321300
  249. ***************PRINT SUBROUTINE CONST'S***************************** 00321400
  250. LTORG 00321500
  251. PRINTST DS 18F 00321600
  252. HEADVAL DS 1C VALUE OF HEADER ARGUMENT FOR COMPARISON 00321717
  253. COMPPK DC P'0' TO COMPARE BALANCE VALUE TO 0 00321817
  254. HEAD DC C'1' 00321911
  255. DC 48C' ' 00322011
  256. DC 27C'FAMOUS NAMES -- CLIENT LIST' 00322111
  257. DC 44C' ' 00322211
  258. HEAD2 DC C'1' 00322311
  259. DC 48C' ' 00322411
  260. DC 31C'CLIENT LIST SORTED BY LAST NAME' 00322511
  261. DC 40C' ' 00322611
  262. FILLER DC C'-' 00322711
  263. DC 10C' ' 00322811
  264. DC 10C'FIRST NAME' 00322911
  265. DC 9C' ' 00323011
  266. DC 10C'LAST NAME ' 00323111
  267. DC 7C' ' 00323211
  268. DC 12C' BALANCE ' 00323311
  269. DC 8C' ' 00323411
  270. DC 8C'PASSWORD' 00323511
  271. DC 10C' ' 00323611
  272. DC 10C'EXP. DATE ' 00323711
  273. DC 9C' ' 00323811
  274. DC 9C'ID NUMBER' 00323911
  275. DC 7C' ' 00324011
  276. LINE DC C'0' 00324100
  277. DC 10C' ' 00324211
  278. FNAME DS 10C 00324309
  279. DC 9C' ' 00324411
  280. LNAME DS 10C 00324509
  281. DC 6C' ' 00324611
  282. BAL DS 13C 00324711
  283. DC 8C' ' 00324811
  284. PASS DS 8C 00324909
  285. DC 9C' ' 00325011
  286. EXPD DS 11C 00325111
  287. DC 9C' ' 00325211
  288. IDNUM DS 9C 00325309
  289. DC 7C' ' 00325411
  290. EXDAT DS PL5 00325511
  291. ENDBAL DS PL5 00325611
  292. *************END PRINT SUBROUTINE****************************** 00325700
  293. *************SORT SUBROUTINE *********************************** 00325800
  294. * FUNCTION: SORT TABLE IN DECENDING ORDER 00325900
  295. * REGISTER USAGE: 00326000
  296. * 1 - USED BY XDECI / PARAM LIST ADDR 00326100
  297. * 2 - PARAM LIST, TABLE 00326200
  298. * 3 - PARAM LIST, EOT 00326300
  299. * 5 - J PTR 00326400
  300. * 6 - MIN PTR 00326500
  301. * 7 - VALUE OF J 00326600
  302. * 8 - VALUE OF MAX 00326700
  303. * 9 - VALUE OF I 00326800
  304. * 10 - SUBROUTINE RETURN ADDRESS 00326900
  305. * 11 - TEMPT 00327000
  306. * PSEUDO CODE: 00327100
  307. * <1> LOAD 1ST ADDRESS AND NEXT ADRESS STORE START IN R6 00327200
  308. * <2> LOAD VALS AND COMPARE, IF 2ND IS LARGER, SWITCH 00327300
  309. * VALUES AND ADVANCE TO SECOD TABLE POSITION, ELSE 00327400
  310. * MOVE THROUGH EACH VAL UNTIL WE FIND A LARGER VAL 00327500
  311. * <3> REPEAT FROM BEGINNING UNTIL ALL ITEMS ARE SORTED 00327600
  312. * <4> RETURN TO MAIN 00327700
  313. ***************************************************************** 00327800
  314. SPACE 3 00327900
  315. SORT CSECT 00328000
  316. STM 14,12,12(13) 00328100
  317. LR 12,15 00328200
  318. USING SORT,12 00328300
  319. LA 14,SORTST 00328400
  320. ST 14,8(13) 00328500
  321. ST 13,4(14) 00328600
  322. LR 13,14 00328700
  323. LM 2,3,0(1) UNLOAD PARAM LIST 00328809
  324. LA 2,10(0,2) ADVANCE TO LAST NAME 00328909
  325. LOOP1 C 2,0(3) CHECK FOR EOT 00329009
  326. BNL END1 IF IS EOT END 00329109
  327. LR 6,2 MIN = IRGE = I 00329209
  328. LA 5,48(2) J = I + 1 00329309
  329. LOOP2 C 5,0(3) CHECK FOR EOT 00329409
  330. BNL END2 IS 5 EOT 00329509
  331. L 7,0(5) LOAD J VALUE 00329609
  332. L 8,0(6) LOAD MIN VALUE 00329709
  333. CR 8,7 COMPARE MIN < J 00329809
  334. BNH ENDIF J COMPARED TO I 00329909
  335. LR 6,5 MAX = J 00330009
  336. ENDIF LA 5,48(0,5) INCREMENT J PTR 00330109
  337. B LOOP2 REPEAT LOOP2 00330200
  338. END2 L 9,0(2) LOAD I VALUE 00330300
  339. L 8,0(6) LOAD MAX VALUE 00330400
  340. ST 9,0(0,6) SWAP VALUES 00330500
  341. ST 8,0(0,2) SWITCH VALUES 9 AT 6 00330600
  342. LA 2,48(0,2) INCREMENT I PTR 2 00330709
  343. B LOOP1 REPEAT LOOP1 00330800
  344. END1 DS 0H INCREMENT TABLE/I 00330900
  345. L 13,4(13) 00331000
  346. LM 14,12,12(13) EXIT LINKAGE 00331100
  347. BR 14 BRANCH TO MAIN 00331200
  348. SORTST DS 18F 00331300
  349. LTORG 00331400
  350. *************END SORT SUBROUTINE ******************************* 00331500
  351. END PROG6 00331609
  352. /* 00332000
  353. //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW6DATA,DISP=SHR 00340000
  354. //FT06F001 DD SYSOUT=* 00379000
  355. // 00440000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement