Advertisement
CodenameDuchess

Prog6-in Progress

Jul 22nd, 2014
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.75 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. MAIN CSECT 00280000
  30. STM 14,12,12(13) 00280100
  31. LR 12,15 00280200
  32. USING MAIN,12 00281000
  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. * XPRNT HEADER,40 00282400
  43. * MVI HEADER+1,C' ' 00282500
  44. * MVC HEADER+1(38),HEADER+1 00282600
  45. * LA 1,PDPL 00282700
  46. * L 15,=V(PRINT) 00282800
  47. * BALR 14,15 00282900
  48. *********CALL SORT***************************************************** 00283000
  49. * LA 1,SORTPL 00283100
  50. * L 15,=V(SORT) 00283200
  51. * BALR 14,15 00283300
  52. *********CALL PRINT2*************************************************** 00283400
  53. * XPRNT HEADER2,40 00283500
  54. * MVI HEADER2+1,C' ' 00283600
  55. * MVC HEADER2+2(38),HEADER2+1 00283700
  56. * LA 1,PDPL 00283800
  57. * L 15,=V(PRINT) 00283900
  58. * BALR 14,15 00284000
  59. *********CALL TALLY**************************************************** 00284100
  60. * XPRNT HEADER3,28 00284200
  61. * MVI HEADER3+1,C' ' 00284300
  62. * MVC HEADER3+2(27),HEADER3+1 00284400
  63. * LA 1,P3PL 00284500
  64. * L 15,=V(TALLY) 00284600
  65. * BALR 14,15 00284700
  66. * XDUMP TABLE,ENDTBLE-TABLE 00286200
  67. * L 13,4(13) 00286300
  68. * LM 14,12,12(13) 00286400
  69. * BR 14 00286500
  70. *************CONSTANTS/PARAM LISTS/LABELS*********************** 00286600
  71. EJECT 00286700
  72. SPACE 3 00286800
  73. LTORG 00286900
  74. MAINSAVE DS 18F 00287000
  75. TABLE DC 70CL10' ' TABLE FIRST NAME D=0 00287200
  76. DC 70CL10' ' LAST NAME D=10 00287300
  77. DC 70CL9' ' ID NUMBER D=20 00287400
  78. DC 70CL8' ' PASSWORD D=29 00287500
  79. DC 70PL5'000000000' BALANCE D=37 00287600
  80. DC 70PL5'000000000' EXPIRATION DATE D=42 00287700
  81. DC 70CL1' ' FILLER D=47 00287800
  82. ENDTBLE DS 0H 00288000
  83. LASTREC DS 1F POINTER FOR LAST RECORD ENTERED 00288100
  84. NUMENT DS 1F NUMBER OF ENTRIES 00289000
  85. BPARMS DC A(TABLE) BUILD PARAMETERS 00289500
  86. DC A(LASTREC) 00289600
  87. DC A(NUMENT) 00289700
  88. *************END CONSTANTS/PARAM LISTS/LABELS******************* 00291700
  89. *************BUILD SUBROUTINE*********************************** 00291800
  90. * FUNCTION: FILL TABLE WITH VALUES FROM FILE 00291900
  91. * REGISTERS: R2---PARAM LIST 00292000
  92. * R3---TABLE POITNER 00292100
  93. * R4---EOT POINTER/LAST ENTRY POINTER 00292200
  94. * R6---COUNTER FOR EOT 00292300
  95. * R7---VALUE OF CURRENT CARD POS 00292400
  96. * R8---D AND H VALUES 00292500
  97. * R10--RETURN MAIN 00292600
  98. * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST 00292700
  99. * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF 00292800
  100. * <3>XDECI FIRST VAL,INCREMENT TABLE, CHECK FOR EOC 00292900
  101. * <4>LOOP2, CONTINUE TO PROCESS FILES UNTIL END OF CARD 00293000
  102. * LOOP BACK TO <2> TIL EOF/TABLE FULL 00293100
  103. **************************************************************** 00293200
  104. EJECT 00293300
  105. SPACE 3 00293400
  106. BUILD CSECT 00293500
  107. STM 14,12,12(13) STORE REGISTERS 00293600
  108. LR 12,15 LOAD PARAM LIST 00293700
  109. USING BUILD,12 00293800
  110. LA 14,BUILDST 00293900
  111. ST 14,8(13) 00294000
  112. ST 13,4(14) 00294100
  113. LR 13,14 00294200
  114. LM 2,4,0(1) UNLOAD PARAM LIST 00294300
  115. SR 6,6 INITIALIZE COUNTER 00294400
  116. LOOPT XREAD CARD,80 READ IN FILE 00294503
  117. BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH 00294600
  118. C 6,=F'70' CHECK FOR EOT 00294700
  119. BC B'1000',LOOPE IF TRUE GO TO END LOOP 00294800
  120. MVC 0(10,2),CARD+12 FIRST NAME 00294900
  121. MVC 10(10,2),CARD LAST NAME 00295000
  122. MVC 20(10,2),CARD+24 ID 00295100
  123. MVC 29(10,2),CARD+35 PASSWORD 00295200
  124. PACK 37(5,2),CARD+55(7) BALANCE 00295300
  125. PACK 42(5,2),CARD+45(8) EXPIRATION DATE 00295400
  126. A 6,=F'1' INCREMENT 00295500
  127. CLI CARD+62,C'-' SIGN COMPARISON 00295704
  128. BE MINUS IF IS A MINUS BRANCH 00295800
  129. LA 2,48(0,2) ADVANCE TABLE POINTER 00295905
  130. B LOOPT 00296000
  131. MINUS MP 37(5,2),=P'-1' AND MULTIPLY BY -1 00296100
  132. LA 2,48(0,2) ADVANCE TABLE POINTER 00296205
  133. B LOOPT BRANCH TO LOOP TOP 00297000
  134. LOOPE ST 6,0(0,4) LOOP END 00297900
  135. ST 2,0(0,3) STORE LAST TABLE ADDRESS AT LASTREC 00298000
  136. LTORG 00299000
  137. BUILDST DS 18F 00300400
  138. CARD DS 80C FOR READING RECORDS 00300501
  139. DC C'*' 00300600
  140. *************END BUILD SUBROUTINE******************************* 00300700
  141. *************PRINT SUBROUTINE*********************************** 00300800
  142. * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE 00300900
  143. * REGISTERS: R1---PARAM LIST 00301000
  144. * R3---TABLE POITNER 00301100
  145. * R4---EOT POINTER/LAST ENTRY POINTER 00301200
  146. * R5---VALUE OF D 00301300
  147. * R6---VALUE OF H 00301400
  148. * R7---VALUE PER LINE COUNTER 00301500
  149. * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION 00301600
  150. * R10--TABLE VALUE STORED FOR XPRNT 00301700
  151. * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS 00302100
  152. * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT 00302200
  153. * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM 00302300
  154. * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2> 00302400
  155. * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H 00302500
  156. * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP 00302600
  157. * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT 00302700
  158. * REMAINING VALUES 00302800
  159. * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN 00302900
  160. **************************************************************** 00303800
  161. EJECT 00303900
  162. SPACE 3 00304000
  163. PRINT CSECT 00304100
  164. STM 14,12,12(13) STORE REGISTERS 00304200
  165. LR 12,15 00304300
  166. USING PRINT,12 00304500
  167. LA 14,PRINTST 00304600
  168. ST 14,8(13) 00304700
  169. ST 13,4(14) 00304800
  170. LR 13,14 00304900
  171. LM 3,6,0(1) LOAD PARAM LIST 00305000
  172. L 5,0(0,5) LOAD D VAL 00305100
  173. L 6,0(0,6) LOAD H VAL 00305200
  174. L 4,0(0,4) LOAD VAL OF EOT 00305300
  175. L 7,=F'0' INITIALIZE LINE COUNTER 00305400
  176. MVI LINE+1,C' ' DESTRUCTIVE OVERLAP 00305500
  177. MVC LINE+2(83),LINE+1 CLEAR LINES 00305600
  178. LOOPTOP CR 3,4 TEST FOR EOT 00305700
  179. BC B'1000',LOOPBOT IF TRUE END 00305800
  180. CR 7,6 COMPARE LINE COUNTER 00305900
  181. BE PRINTX IF EQUAL BRANCH TO XPRNT 00306000
  182. L 9,0(3) LOAD CURRENT VAL 00306100
  183. M 8,=F'1' 00306200
  184. LR 10,9 COPY R9 TO R10 00306300
  185. LA 3,4(0,3) ADVANCE TABLE POINTER 00306400
  186. DR 8,5 DIVIDE BY D 00306500
  187. C 8,=F'0' CHECK REMAINDER 00306600
  188. BNZ LOOPTOP LOOP TO BEGINNING IF FALSE 00306700
  189. XDECO 10,VAR1 PREP VAL FOR PRINT 00306800
  190. A 7,=F'1' INCREMENT COUNTER 00306900
  191. SAVE1 CR 3,4 CHECK FOR EOT 00307000
  192. BC B'1000',LOOPBOT IF TRUE END 00307100
  193. CR 7,6 COMPARE LINE COUNTER 00307200
  194. BE PRINTX IF EQUAL BRANCH TO XPRNT 00307300
  195. L 9,0(3) LOAD CURRENT VAL 00307400
  196. M 8,=F'1' SET R8&R9 FOR 32 BIT 00307500
  197. LR 10,9 COPY R9 TO R10 00307600
  198. LA 3,4(0,3) ADVANCE TABLE POINTER 00307700
  199. DR 8,5 DIVIDE BY D 00307800
  200. C 8,=F'0' CHECK REMAINDER 00307900
  201. BNZ SAVE1 LOOP TO SAVE1 IF FALSE 00308000
  202. XDECO 10,VAR2 PREP VAL FOR PRINT 00308100
  203. A 7,=F'1' INCREMENT COUNTER 00308200
  204. SAVE2 CR 3,4 CHECK FOR EOT 00308300
  205. BC B'1000',LOOPBOT IF TRUE END 00308400
  206. CR 7,6 COMPARE LINE COUNTER 00308500
  207. BE PRINTX IF EQUAL BRANCH TO XPRNT 00308600
  208. L 9,0(3) LOAD CURRENT VAL 00308700
  209. M 8,=F'1' SET R8&R9 FOR 32 BIT 00308800
  210. LR 10,9 COPY R9 TO R10 00309000
  211. LA 3,4(0,3) ADVANCE TABLE POINTER 00310000
  212. DR 8,5 DIVIDE BY D 00311000
  213. C 8,=F'0' CHECK REMAINDER 00311100
  214. BNZ SAVE2 LOOP TO SAVE2 IF FALSE 00311200
  215. XDECO 10,VAR3 PREP VAL FOR PRINT 00311300
  216. A 7,=F'1' INCREMENT COUNTER 00311400
  217. SAVE3 CR 3,4 CHECK FOR EOT 00311500
  218. BC B'1000',LOOPBOT IF TRUE END 00311600
  219. CR 7,6 COMPARE LINE COUNTER 00311700
  220. BE PRINTX IF EQUAL BRANCH TO XPRNT 00311800
  221. L 9,0(3) LOAD CURRENT VAL 00312000
  222. M 8,=F'1' SET R8&R9 FOR 32 BIT 00312100
  223. LR 10,9 COPY R9 TO R10 00312200
  224. LA 3,4(0,3) ADVANCE TABLE POINTER 00312300
  225. DR 8,5 DIVIDE BY D 00312400
  226. C 8,=F'0' CHECK REMAINDER 00312500
  227. BNZ SAVE3 LOOP TO SAVE3 IF FALSE 00312600
  228. XDECO 10,VAR4 PREP VAL FOR PRINT 00312700
  229. A 7,=F'1' INCREMENT COUNTER 00312800
  230. SAVE4 CR 3,4 CHECK FOR EOT 00312900
  231. BC B'1000',LOOPBOT IF TRUE END 00313000
  232. CR 7,6 COMPARE LINE COUNTER 00313100
  233. BE PRINTX IF EQUAL BRANCH TO XPRNT 00313200
  234. L 9,0(3) LOAD CURRENT VAL 00313400
  235. M 8,=F'1' SET R8&R9 FOR 32 BIT 00313500
  236. LR 10,9 COPY R9 TO R10 00313600
  237. LA 3,4(0,3) ADVANCE TABLE POINTER 00313700
  238. DR 8,5 DIVIDE BY D 00313800
  239. C 8,=F'0' CHECK REMAINDER 00313900
  240. BNZ SAVE4 LOOP TO SAVE4 IF FALSE 00314000
  241. XDECO 10,VAR5 PREP VAL FOR PRINT 00314100
  242. A 7,=F'1' INCREMENT COUNTER 00314200
  243. SAVE5 CR 3,4 CHECK FOR EOT 00314300
  244. BC B'1000',LOOPBOT IF TRUE END 00314400
  245. CR 7,6 COMPARE LINE COUNTER 00314500
  246. BE PRINTX IF EQUAL BRANCH TO XPRNT 00314600
  247. L 9,0(3) LOAD CURRENT VAL 00314800
  248. M 8,=F'1' SET R8&R9 FOR 32 BIT 00314900
  249. LR 10,9 COPY R9 TO R10 00315000
  250. LA 3,4(0,3) ADVANCE TABLE POINTER 00315100
  251. DR 8,5 DIVIDE BY D 00315200
  252. C 8,=F'0' CHECK REMAINDER 00315300
  253. BNZ SAVE5 LOOP TO SAVE5 IF FALSE 00315400
  254. XDECO 10,VAR6 PREP VAL FOR PRINT 00315500
  255. A 7,=F'1' INCREMENT COUNTER 00315600
  256. SAVE6 CR 3,4 CHECK FOR EOT 00315700
  257. BC B'1000',LOOPBOT IF TRUE END 00315800
  258. CR 7,6 COMPARE LINE COUNTER 00315900
  259. BE PRINTX IF EQUAL BRANCH TO XPRNT 00316000
  260. L 9,0(3) LOAD CURRENT VAL 00316200
  261. M 8,=F'1' SET R8&R9 FOR 32 BIT 00316300
  262. LR 10,9 COPY R9 TO R10 00316400
  263. LA 3,4(0,3) ADVANCE TABLE POINTER 00316500
  264. DR 8,5 DIVIDE BY D 00316600
  265. C 8,=F'0' CHECK REMAINDER 00316700
  266. BNZ SAVE6 LOOP TO SAVE6 IF FALSE 00316800
  267. XDECO 10,VAR7 PREP VAL FOR PRINT 00316900
  268. A 7,=F'1' INCREMENT COUNTER 00317000
  269. PRINTX XPRNT LINE,85 PRINT VALS 00317100
  270. MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00317200
  271. MVC LINE+2(83),LINE+1 00317300
  272. SR 7,7 00317400
  273. B LOOPTOP START NEXT LINE 00317500
  274. LOOPBOT DS 0H 00317600
  275. XPRNT LINE,85 PRINT VALS 00317700
  276. L 13,4(13) 00317800
  277. LM 14,12,12(13) EXIT LINKAGE 00317900
  278. BR 14 BRANCH TO MAIN 00318000
  279. ***************PRINT SUBROUTINE CONST'S***************************** 00318100
  280. LTORG 00318200
  281. PRINTST DS 18F 00318300
  282. LINE DC C'0' 00318400
  283. VAR1 DS 7C 00318500
  284. DC 5C' ' 00318600
  285. VAR2 DS 7C 00318700
  286. DC 5C' ' 00318800
  287. VAR3 DS 7C 00318900
  288. DC 5C' ' 00319000
  289. VAR4 DS 7C 00319100
  290. DC 5C' ' 00319200
  291. VAR5 DS 7C 00319300
  292. DC 5C' ' 00319400
  293. VAR6 DS 7C 00319500
  294. DC 5C' ' 00319600
  295. VAR7 DS 7C 00319700
  296. DC 5C' ' 00319800
  297. *************END PRINT SUBROUTINE****************************** 00319900
  298. *************SORT SUBROUTINE *********************************** 00320000
  299. * FUNCTION: SORT TABLE IN DECENDING ORDER 00320100
  300. * REGISTER USAGE: 00320200
  301. * 1 - USED BY XDECI / PARAM LIST ADDR 00320300
  302. * 2 - PARAM LIST, TABLE 00320400
  303. * 3 - PARAM LIST, EOT 00320500
  304. * 5 - J PTR 00320700
  305. * 6 - MIN PTR 00320800
  306. * 7 - VALUE OF J 00320900
  307. * 8 - VALUE OF MAX 00321000
  308. * 9 - VALUE OF I 00321100
  309. * 10 - SUBROUTINE RETURN ADDRESS 00321200
  310. * 11 - TEMPT 00321300
  311. * PSEUDO CODE: 00321400
  312. * <1> LOAD 1ST ADDRESS AND NEXT ADRESS STORE START IN R6 00321500
  313. * <2> LOAD VALS AND COMPARE, IF 2ND IS LARGER, SWITCH 00321600
  314. * VALUES AND ADVANCE TO SECOD TABLE POSITION, ELSE 00321700
  315. * MOVE THROUGH EACH VAL UNTIL WE FIND A LARGER VAL 00321800
  316. * <3> REPEAT FROM BEGINNING UNTIL ALL ITEMS ARE SORTED 00321900
  317. * <4> RETURN TO MAIN 00322000
  318. ***************************************************************** 00322100
  319. SPACE 3 00322200
  320. SORT CSECT 00322300
  321. STM 14,12,12(13) 00322400
  322. LR 12,15 00322500
  323. USING SORT,12 00322600
  324. LA 14,SORTST 00322700
  325. ST 14,8(13) 00322800
  326. ST 13,4(14) 00322900
  327. LR 13,14 00323000
  328. LM 2,3,0(1) UNLOAD PARAM LIST 00323100
  329. LOOP1 C 2,0(3) CHECK FOR EOT 00323200
  330. BNL END1 IF IS EOT END 00323300
  331. LR 6,2 MAX = IRGE = I 00323400
  332. LA 5,4(2) J = I + 1 00323500
  333. LOOP2 C 5,0(3) CHECK FOR EOT 00323600
  334. BNL END2 IS 5 EOT 00323700
  335. L 7,0(5) LOAD J VALUE 00323800
  336. L 8,0(6) LOAD MAX VALUE 00323900
  337. CR 8,7 COMPARE MAX < J 00324000
  338. BNL ENDIF J COMPARED TO I 00324100
  339. LR 6,5 MAX = J 00324200
  340. ENDIF A 5,=F'4' INCREMENT J PTR 00324300
  341. B LOOP2 REPEAT LOOP2 00324400
  342. END2 L 9,0(2) LOAD I VALUE 00324500
  343. L 8,0(6) LOAD MAX VALUE 00324600
  344. ST 9,0(0,6) SWAP VALUES 00324700
  345. ST 8,0(0,2) SWITCH VALUES 9 AT 6 00324800
  346. A 2,=F'4' INCREMENT I PTR 2 00324900
  347. B LOOP1 REPEAT LOOP1 00325000
  348. END1 DS 0H INCREMENT TABLE/I 00325100
  349. L 13,4(13) 00325200
  350. LM 14,12,12(13) EXIT LINKAGE 00325300
  351. BR 14 BRANCH TO MAIN 00325400
  352. SORTST DS 18F 00325500
  353. LTORG 00325600
  354. *************END SORT SUBROUTINE ******************************* 00325700
  355. END MAIN 00325800
  356. /* 00326000
  357. //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW6DATA,DISP=SHR 00330000
  358. //FT06F001 DD SYSOUT=* 00379000
  359. // 00440000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement