Advertisement
CodenameDuchess

PROG6.3

Jul 23rd, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.02 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 00280000
  30. STM 14,12,12(13) 00280100
  31. LR 12,15 00280200
  32. USING PROG6,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. LA 1,P1PAR 00282716
  43. L 15,=V(PRINT) 00282816
  44. BALR 14,15 00282916
  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 00283816
  51. L 15,=V(PRINT) 00283916
  52. BALR 14,15 00284016
  53. *********CALL TALLY**************************************************** 00284100
  54. LA 1,TALLPL 00284516
  55. L 15,=V(TALLY) 00284616
  56. BALR 14,15 00284716
  57. XDUMP
  58. L 13,4(13) 00286300
  59. LM 14,12,12(13) 00286400
  60. BR 14 00286500
  61. *************CONSTANTS/PARAM LISTS/LABELS*********************** 00286600
  62. EJECT 00286700
  63. SPACE 3 00286800
  64. LTORG 00286900
  65. MAINSAVE DS 18F 00287026
  66. ORG PROG6+(*-PROG6+15)/16*16 00287100
  67. TABLE DC 70CL48' ' TABLE FIRST NAME D=0 00287216
  68. ENDTBLE DS 0H 00288000
  69. LASTREC DS 1F POINTER FOR LAST RECORD ENTERED 00288100
  70. NUMENT DS 1F NUMBER OF ENTRIES 00289000
  71. FIRST DC C'1' PRINT HEADER INDICATOR 00289125
  72. SECOND DC C'2' PRINT HEADER INDICATOR 00289225
  73. BPARMS DC A(TABLE) BUILD PARAMETERS 00289500
  74. DC A(LASTREC) 00289600
  75. DC A(NUMENT) 00289700
  76. P1PAR DC A(TABLE) BEFORE SORT PRINT PARAM LIST 00289800
  77. DC A(LASTREC) 00289900
  78. DC A(FIRST) 00290000
  79. P2PAR DC A(TABLE) AFTER SORT PARAM LIST 00291000
  80. DC A(LASTREC) 00291100
  81. DC A(SECOND) 00291200
  82. SORTPL DC A(TABLE)
  83. DC A(LASTREC)
  84. TALLPL DC A(TABLE) TALLY PARAM LIST 00291300
  85. DC A(LASTREC) 00291400
  86. DC A(NUMENT) 00291500
  87. *************END CONSTANTS/PARAM LISTS/LABELS******************* 00291700
  88. *************BUILD SUBROUTINE*********************************** 00291800
  89. * FUNCTION: FILL TABLE WITH VALUES FROM FILE 00291900
  90. * REGISTERS: R1---PARAM LIST 00292000
  91. * R2---TABLE POITNER 00292100
  92. * R3---EOT POINTER/LAST ENTRY POINTER 00292200
  93. * R4---TOTAL ENTRY FOR TABLE 00292300
  94. * R6---COUNTER OF VALUES IN TABLE 00292400
  95. * R14--RETURN MAIN 00292600
  96. * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST 00292700
  97. * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF 00292800
  98. * <3>READ AND STORE VALUES 00292900
  99. * <4>MULTIPLY BALANCE BY -1 IF NECESSARY 00293000
  100. * LOOP BACK TO <2> TIL EOF/TABLE FULL 00293100
  101. **************************************************************** 00293200
  102. EJECT 00293300
  103. SPACE 3 00293400
  104. BUILD CSECT 00293500
  105. STM 14,12,12(13) STORE REGISTERS 00293600
  106. LR 12,15 LOAD PARAM LIST 00293700
  107. USING BUILD,12 00293800
  108. LA 14,BUILDST 00293900
  109. ST 14,8(13) 00294000
  110. ST 13,4(14) 00294100
  111. LR 13,14 00294200
  112. LM 2,4,0(1) UNLOAD PARAM LIST 00294300
  113. SR 6,6 INITIALIZE COUNTER 00294400
  114. LOOPT XREAD CARD,80 READ IN FILE 00294524
  115. BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH 00294600
  116. C 6,=F'70' CHECK FOR EOT 00294700
  117. BC B'1000',LOOPE IF TRUE GO TO END LOOP 00294800
  118. MVC 0(10,2),CARD+12 FIRST NAME 00294900
  119. MVC 10(10,2),CARD LAST NAME 00295000
  120. MVC 20(10,2),CARD+24 ID 00295100
  121. MVC 29(10,2),CARD+35 PASSWORD 00295200
  122. PACK 37(5,2),CARD+55(7) BALANCE 00295300
  123. PACK 42(5,2),CARD+45(8) EXPIRATION DATE 00295400
  124. A 6,=F'1' INCREMENT 00295600
  125. CLI CARD+62,C'-' SIGN COMPARISON 00295700
  126. BE MINUS IF IS A MINUS BRANCH 00295800
  127. LA 2,48(0,2) ADVANCE TABLE POINTER 00295900
  128. B LOOPT 00296000
  129. MINUS MP 37(5,2),=P'-1' AND MULTIPLY BY -1 00296100
  130. LA 2,48(0,2) ADVANCE TABLE POINTER 00296200
  131. B LOOPT BRANCH TO LOOP TOP 00297000
  132. LOOPE ST 6,0(0,4) LOOP END 00297900
  133. ST 2,0(3) STORE LAST TABLE ADDRESS AT LASTREC 00298000
  134. L 13,4(13) 00298100
  135. LM 14,12,12(13) EXIT LINKAGE 00298200
  136. BR 14 BRANCH TO MAIN 00298300
  137. LTORG 00299000
  138. BUILDST DS 18F 00300400
  139. CARD DS 80C FOR READING RECORDS 00300500
  140. DC C'*' 00300600
  141. *************END BUILD SUBROUTINE******************************* 00300700
  142. *************PRINT SUBROUTINE*********************************** 00300800
  143. * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE 00300900
  144. * REGISTERS: R1---PARAM LIST 00301000
  145. * R3---TABLE POITNER 00301100
  146. * R4---EOT POINTER/LAST ENTRY POINTER 00301200
  147. * R5---VALUE OF D 00301300
  148. * R6---VALUE OF H 00301400
  149. * R7---VALUE PER LINE COUNTER 00301500
  150. * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION 00301600
  151. * R10--TABLE VALUE STORED FOR XPRNT 00301700
  152. * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS 00302100
  153. * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT 00302200
  154. * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM 00302300
  155. * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2> 00302400
  156. * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H 00302500
  157. * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP 00302600
  158. * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT 00302700
  159. * REMAINING VALUES 00302800
  160. * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN 00302900
  161. **************************************************************** 00303800
  162. EJECT 00303900
  163. SPACE 3 00304000
  164. PRINT CSECT 00304100
  165. STM 14,12,12(13) STORE REGISTERS 00304200
  166. LR 12,15 ENTRY LINKAGE 00304329
  167. USING PRINT,12 00304500
  168. LA 14,PRINTST LOAD STORAGE AREA 00304629
  169. ST 14,8(13) ADDRESS HERE 00304729
  170. ST 13,4(14) ADDRESS BACK 00304829
  171. LR 13,14 00304900
  172. LM 2,4,0(1) LOAD PARAM LIST 00305000
  173. L 3,0(0,3) LOAD EOT 00305103
  174. SR 7,7 INITIALIZE ENTRY/PG COUNTER
  175. MVI LINE+1,C' ' 00305321
  176. MVC LINE+2(118),LINE+1 00305421
  177. CLI 0(4),C'2' CHECK HEADER ARGUMENT 00305628
  178. BE HEADER2 00305800
  179. MVC PRNUM(6),=XL2'402020202120'
  180. EDMK PRNUM(6),PNUM 00306349
  181. XPRNT HEAD,120 PRINT HEADER 00306429
  182. MVI LINE+1,C' ' 00306521
  183. MVC LINE+2(118),LINE+1 00306621
  184. XPRNT FILLER,120 PRINT COLUMN TITLES 00306729
  185. MVI LINE+1,C' ' 00306821
  186. MVC LINE+2(118),LINE+1 00306922
  187. LOOPTOP CR 2,3 TEST FOR EOT 00307100
  188. BC B'1000',LOOPBOT IF TRUE END 00307200
  189. MVC FNAME(10),0(2) PUT FIRST NAME IN FNAME 00307320
  190. MVC LNAME(10),10(2) PUT LAST NAME IN LNAME 00307420
  191. MVC PASS(8),29(2) PUT PASSWORD IN PASS 00308033
  192. MVC EXDAT(5),42(2) PUT EXPIRATION DATE IN EXDAT 00308133
  193. MVC EXPD(12),=XL12'402020202020612020612020' 00309029
  194. ED EXPD(12),EXDAT 00309131
  195. MVC IDNUM(9),20(2) PUT ID NUMBER IN IDNUM 00310007
  196. MVC ENDBAL(5),37(2) PUT BALANCE IN END BAL
  197. CP ENDBAL(5),=P'0' 00311029
  198. BNH NEGBAL 00312029
  199. LA 1,BAL+7
  200. MVC BAL(14),=XL14'40202020202021204B202040C3D9'
  201. EDMK BAL(14),ENDBAL 00314033
  202. BCTR 1,0 00315033
  203. MVI 0(1),C'$' 00316033
  204. XPRNT LINE,120 PRINT VALS 00317100
  205. MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00317200
  206. MVC LINE+2(118),LINE+1 00317300
  207. LA 2,48(0,2) ADVANCE POINTER 00317419
  208. A 7,=F'1' 00317500
  209. C 7,=F'24' 00317600
  210. BNL NEWPG 00317730
  211. B LOOPTOP 00317800
  212. NEGBAL DS 0H 00317900
  213. LA 1,BAL+7
  214. MVC BAL(14),=XL14'40202020202021204B202040C3D9'
  215. EDMK BAL(14),ENDBAL 00318100
  216. BCTR 1,0 00318200
  217. MVI 0(1),C'$' 00318300
  218. XPRNT LINE,120 PRINT VALS 00319000
  219. MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00319100
  220. MVC LINE+2(118),LINE+1 00319200
  221. LA 2,48(0,2) ADVANCE POINTER 00319300
  222. A 7,=F'1' 00319400
  223. C 7,=F'24' 00319500
  224. BNL NEWPG 00319630
  225. B LOOPTOP 00319700
  226. NEWPG DS 0H 00319829
  227. SR 7,7 RESET COUNTER 00319933
  228. CLI 0(4),C'2' 00320030
  229. BE HEADER2 00320130
  230. AP PNUM(2),PINC(1)
  231. MVC PRNUM(6),=XL2'402020202120'
  232. EDMK PRNUM(6),PNUM 00320749
  233. XPRNT HEAD,120 00320800
  234. MVI LINE+1,C' ' 00320927
  235. MVC LINE+2(118),LINE
  236. XPRNT FILLER,120 PRINT COLUMN TITLES
  237. MVI LINE+1,C' '
  238. MVC LINE+2(118),LINE+1
  239. B LOOPTOP START NEXT LINE 00321100
  240. HEADER2 DS 0H 00321229
  241. MVI LINE+1,C' ' 00321327
  242. MVC LINE+2(118),LINE+1
  243. MVC PRNUM(6),=XL2'402020202120'
  244. EDMK PRNUM(6),PNUM2 00321849
  245. XPRNT HEAD2,120 00321929
  246. AP PNUM2(2),PINC(1) 00322043
  247. MVI LINE+1,C' ' 00322129
  248. MVC LINE+2(118),LINE+1 00322229
  249. XPRNT FILLER,120 00322300
  250. MVI LINE+1,C' ' 00322422
  251. MVC LINE+2(118),LINE+1 00322522
  252. B LOOPTOP 00322600
  253. LOOPBOT DS 0H 00322700
  254. L 13,4(13) 00322800
  255. LM 14,12,12(13) EXIT LINKAGE 00322900
  256. BR 14 BRANCH TO MAIN 00323000
  257. ***************PRINT SUBROUTINE CONST'S***************************** 00323100
  258. LTORG 00323200
  259. PRINTST DS 18F 00323300
  260. PINC DC PL1'1'
  261. HEAD DC C'1' 00323400
  262. DC 48C' ' 00323500
  263. DC CL42'FAMOUS NAMES -- CLIENT LIST ' 00323600
  264. DC CL6'PAGE: '
  265. DC 2C' '
  266. PNUM DC PL2'01' 00323947
  267. DC 13C' ' 00324040
  268. HEAD2 DC C'1' 00324100
  269. DC 48C' ' 00324200
  270. DC CL31'CLIENT LIST SORTED BY LAST NAME' 00324300
  271. DC 11C' ' 00324440
  272. DC CL6'PAGE: '
  273. DC 2C' '
  274. PNUM2 DC PL2'01' PAGE NUMBER 00324647
  275. DC 13C' '
  276. FILLER DC C'-' 00324800
  277. DC 10C' ' 00324900
  278. DC CL10'FIRST NAME' 00325000
  279. DC 9C' ' 00325100
  280. DC CL10'LAST NAME ' 00325200
  281. DC 7C' ' 00325300
  282. DC CL12' BALANCE ' 00325400
  283. DC 8C' ' 00325500
  284. DC CL8'PASSWORD' 00325600
  285. DC 10C' ' 00325700
  286. DC CL10'EXP. DATE ' 00325800
  287. DC 9C' ' 00325900
  288. DC CL9'ID NUMBER' 00326000
  289. DC 7C' ' 00326100
  290. LINE DC C'0' 00326200
  291. DC 10C' ' 00326300
  292. FNAME DC 10C' ' 00326433
  293. DC 9C' ' 00326500
  294. LNAME DC 10C' ' 00326633
  295. DC 5C' ' 00326700
  296. BAL DC 14C' ' 00326833
  297. DC 8C' ' 00326900
  298. PASS DC 8C' ' 00327033
  299. DC 8C' ' 00327100
  300. EXPD DC 12C' ' 00327233
  301. DC 9C' ' 00327329
  302. IDNUM DC 9C' ' 00327433
  303. DC 7C' ' 00327500
  304. PRNUM DC PL6'0' 00327649
  305. EXDAT DC PL5'0' 00327733
  306. ENDBAL DS PL5'0'
  307. *************END PRINT SUBROUTINE****************************** 00327900
  308. *************SORT SUBROUTINE *********************************** 00328000
  309. * FUNCTION: SORT TABLE IN DECENDING ORDER 00328100
  310. * REGISTER USAGE: 00328200
  311. * 1 - USED BY XDECI / PARAM LIST ADDR 00328300
  312. * 2 - PARAM LIST, TABLE 00328400
  313. * 3 - PARAM LIST, EOT 00328500
  314. * 5 - J PTR 00328600
  315. * 6 - MIN PTR 00328700
  316. * 7 - VALUE OF J 00328800
  317. * 8 - VALUE OF MAX 00328900
  318. * 9 - VALUE OF I 00329000
  319. * 14 - SUBROUTINE RETURN ADDRESS 00329100
  320. * 11 - TEMPT 00329200
  321. * PSEUDO CODE: 00329300
  322. * <1> LOAD 1ST ADDRESS AND NEXT ADRESS STORE START IN R6 00329400
  323. * <2> LOAD VALS AND COMPARE, IF 2ND IS LARGER, SWITCH 00329500
  324. * VALUES AND ADVANCE TO SECOD TABLE POSITION, ELSE 00329600
  325. * MOVE THROUGH EACH VAL UNTIL WE FIND A LARGER VAL 00329700
  326. * <3> REPEAT FROM BEGINNING UNTIL ALL ITEMS ARE SORTED 00329800
  327. * <4> RETURN TO MAIN 00329900
  328. ***************************************************************** 00330000
  329. SPACE 3 00330100
  330. SORT CSECT 00330200
  331. STM 14,12,12(13) 00330300
  332. LR 12,15 00330400
  333. USING SORT,12 00330500
  334. LA 14,SORTST 00330600
  335. ST 14,8(13) 00330700
  336. ST 13,4(14) 00330800
  337. LR 13,14 00330900
  338. LM 2,3,0(1) UNLOAD PARAM LIST 00331000
  339. LOOP1 C 2,0(3) CHECK FOR EOT 00331200
  340. BNL END1 IF IS EOT END 00331300
  341. LR 6,2 LOW=BEGIN 00331400
  342. LR 5,2 I=BEGIN 00331500
  343. LA 5,48(05) I INCREMENT
  344. MVC NAME1(48),0(6) KEY(LOW) INTO NAME1
  345. LOOP2 C 5,0(3) CHECK FOR EOT 00331600
  346. BNL END2 IS 5 EOT 00331700
  347. MVC NAME2(48),0(5) KEY(I) INTO NAME 2
  348. CLC 10(10,6),NAME2+10 COMPARE LOW TO I 00332000
  349. BNH ENDIF LOW COMPARED TO I 00332100
  350. MVC NAME1(48),NAME2 I = LOW
  351. LR 6,5 STORE CURRENT LOW ADDRESS
  352. ENDIF LA 5,48(0,5) INCREMENT I 00332300
  353. B LOOP2 REPEAT LOOP2 00332400
  354. END2 MVC NAME2(48),0(2) LOAD BEGIN VAL
  355. MVC 0(48,2),NAME1 STORE LOW AT BEGIN
  356. MVC 0(48,6),NAME2 STORE BEGIN AT LOW ADDRESS
  357. LA 2,48(0,2) INCREMENT I PTR 2 00332900
  358. B LOOP1 REPEAT LOOP1 00333000
  359. END1 DS 0H INCREMENT TABLE/I 00333100
  360. L 13,4(13) 00333200
  361. LM 14,12,12(13) EXIT LINKAGE 00333300
  362. BR 14 BRANCH TO MAIN 00333400
  363. SORTST DS 18F 00333500
  364. LTORG
  365. NAME1 DS 48C
  366. NAME2 DS 48C
  367. *************END SORT SUBROUTINE ******************************* 00333700
  368. **************************************************************** 00333805
  369. * 00333905
  370. * 00334005
  371. * 00334105
  372. * 00334205
  373. * 00334305
  374. * 00334405
  375. * 00334505
  376. * 00334605
  377. * 00334705
  378. * 00334805
  379. **************************************************************** 00334905
  380. EJECT 00335009
  381. SPACE 3 00335109
  382. TALLY CSECT 00335210
  383. STM 14,12,12(13) STORE REGISTERS 00335309
  384. LR 12,15 LOAD PARAM LIST 00335409
  385. USING TALLY,12 00335509
  386. LA 14,TALLYST 00335610
  387. ST 14,8(13) 00335709
  388. ST 13,4(14) 00335809
  389. LR 13,14 00335909
  390. LM 2,4,0(1) UNLOAD PARAM LIST 00336009
  391. L 4,0(0,4) LOAD NUM ENT 00336109
  392. L 3,0(0,3) LOAD EOT ADDRESS
  393. MVC LARGE(5),37(2)
  394. LOOP1 CR 2,3
  395. BNL ENDLOOP
  396. LA 2,48(0,2)
  397. ENDLOOP DS 0H
  398. CVD 4,DOUBLE
  399. UNPK NUMSENT(3),DOUBLE(3) 00336313
  400. PACK PCKED(3),NUMSENT(3) 00336413
  401. MVC NUMOUT(4),=X'40202020'
  402. EDMK NUMOUT(4),PCKED 00336615
  403. XPRNT TOTAL,30
  404. L 13,4(13) 00336809
  405. LM 14,12,12(13) EXIT LINKAGE 00336909
  406. BR 14 BRANCH TO MAIN 00337009
  407. ************TALLY CONST/LABELS*********************************** 00337110
  408. TALLYST DS 18F 00337211
  409. DOUBLE DS D
  410. NUMSENT DS ZL3 00337413
  411. PCKED DS PL3 00337513
  412. SUMP DS PL5
  413. LARGEP DS PL5
  414. NEGCT DS PL2
  415. TOTAL DC CL25'- NUMBER OF CLIENTS: ' 00337309
  416. DC C' '
  417. NUMOUT DS 4C
  418. SUM DC CL31'0 SUM OF ACCOUNT BALANCES: '
  419. AVG DC CL31'0 AVERAGE ACCOUNT BALANCE: '
  420. LARGE DC CL31'0 LARGEST ACCOUNT BALANCE: '
  421. NEG DC CL35'0 NUMBER OF NEGATIVE BALANCES: '
  422. *************************END TALLY******************************* 00337705
  423. END PROG6 00337800
  424. /* 00338000
  425. //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW6DATA,DISP=SHR 00340000
  426. //FT06F001 DD SYSOUT=* 00379000
  427. // 00440000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement