Advertisement
CodenameDuchess

PROG7

Jul 27th, 2014
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.36 KB | None | 0 0
  1. //KC03O10M JOB ,'MATTHEW ROWE' ,MSGCLASS=H
  2. //STEP1 EXEC PGM=ASSIST
  3. //STEPLIB DD DSN=KC02293.ASSIST.LOADLIB,DISP=SHR
  4. //SYSPRINT DD SYSOUT=*
  5. //SYSIN DD *
  6. **********************************************************************
  7. * ASSIGNMENT 7
  8. * NAME: MATTHEW ROWE
  9. * FUNCTION: USE INTERNAL SUBROUTINES TO LOAD A TABLE READ FROM FILE
  10. * PRINT THE VALUES IN LINES OF 5 AND THEN PRINT ALL EVEN
  11. * ENTRIES IN THE SAME FASHION
  12. *
  13. * INPUT: FT05F001
  14. * OUTPUT: STDOUT INDIVIDUAL PAY RECORDS PER EMPLOYEE AS WELL AS TOTALS
  15. * ENTRY CONDS: NONE
  16. * EXIT CONDS: NONE
  17. * REGISTERS: R12--BASE REGISTER
  18. * R1---PARAMETER LISTS FOR SUBROUTINES
  19. * R14--LINK BACK TO MAIN FORWARD POINTER
  20. * R15--LINK TO SUB FRORWARD POINTER
  21. * PSEUDOCODE: <1> LOAD PARAMS AND BRANCH TO BUILD SUB
  22. * <2> LOAD PARAMS AND BRANCH TO PRINT SUB
  23. * <3> LOAD PARAMS AND BRANCH TO SORT SUB
  24. * <4> LOAD PARAMS AND BRANCH TO PRINT SUB
  25. * FOR SORTED, MULTIPLES OF 6;5; AND 4
  26. ***********************************************************************
  27. TITLE 'MATTHEW ROWE, CSCI 360, PROGRAM6'
  28. SPACE 3
  29. PROG7 CSECT
  30. STM 14,12,12(13)
  31. LR 12,15
  32. USING PROG7,12
  33. LA 14,MAINSAVE
  34. ST 14,8(13)
  35. ST 13,4(14)
  36. LR 13,14
  37. *********CALL BUILD****************************************************
  38. LA 1,BPARMS
  39. L 15,=V(BUILD)
  40. BALR 14,15
  41. *********PRINT 1******************************************************
  42. LA 1,PPRAM1
  43. L 15,=V(PRINT)
  44. BALR 14,15
  45. XDUMP TABLE,ENDTBLE-TABLE
  46. L 13,4(13)
  47. LM 14,12,12(13)
  48. BR 14
  49. *************CONSTANTS/PARAM LISTS/LABELS*****************************
  50. EJECT
  51. SPACE 3
  52. LTORG
  53. MAINSAVE DS 18F
  54. ORG PROG7+(*-PROG7+31)/32*32
  55. TABLE DS 1600C TABLE FIRST NAME D=0
  56. ENDTBLE DS 0H
  57. LASTREC DS F POINTER FOR LAST RECORD ENTERED
  58. PAGENUM DC PL1'0'
  59. PHEAD1 DC F'1'
  60. PHEAD2 DC F'2'
  61. BPARMS DC A(TABLE) BUILD PARAMETERS
  62. DC A(LASTREC)
  63. PPRAM1 DC A(TABLE) PRINT PARAMETERS
  64. DC A(LASTREC)
  65. DC A(PHEAD1)
  66. DC A(PAGENUM)
  67. PPRAM2 DC A(TABLE) 2ND PRINT PARAMETERS
  68. DC A(LASTREC)
  69. DC A(PHEAD2)
  70. DC A(PAGENUM)
  71. *************END CONSTANTS/PARAM LISTS/LABELS*******************
  72. *************BUILD SUBROUTINE***********************************
  73. * FUNCTION: FILL TABLE WITH VALUES FROM FILE
  74. * REGISTERS: R1---PARAM LIST
  75. * R2---RESERVED FOR TRT
  76. * R3---EOT POINTER/LAST ENTRY POINTER
  77. * R4---TABLE POINTER
  78. * R5---LENGTH OF ENTRY
  79. * R14--RETURN MAIN
  80. * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST
  81. * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF
  82. * <3>READ AND STORE VALUES
  83. * <4>MULTIPLY BALANCE BY -1 IF NECESSARY
  84. * LOOP BACK TO <2> TIL EOF/TABLE FULL
  85. ****************************************************************
  86. EJECT
  87. SPACE 3
  88. BUILD CSECT
  89. STM 14,12,12(13) STORE REGISTERS
  90. LR 12,15 LOAD PARAM LIST
  91. USING BUILD,12
  92. LA 14,BUILDST
  93. ST 14,8(13)
  94. ST 13,4(14)
  95. LR 13,14
  96. LM 3,4,0(1) UNLOAD PARAM LIST
  97. SR 8,8 INITIALIZE COUNTER
  98. LA 5,CARD
  99. LOOPT XREAD CARD,80 READ IN FILE
  100. BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH
  101. C 8,=F'50' CHECK FOR EOT
  102. BC B'1000',LOOPE IF TRUE GO TO END LOOP
  103. ***************ID NUMBER********************************************
  104. TRT 0(80,5),TRCHAR CHECK FOR NON BLANK
  105. C 1,=A(MARKER) CHECK FOR END OF CARD
  106. BC B'1010',LOOPT
  107. LR 6,1 STORE NON BLANK
  108. TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER CHAR
  109. LR 7,1 STORE ADDRESS
  110. LR 9,7 SAVE BLANK ADDRESS FOR NEX TRT
  111. SR 7,6 GET LENGTH
  112. BCTR 7,0 ADJUST LENGTH
  113. EX 7,IDMVC ID
  114. PACK IDNUM(8),IDNUM(8) PACK ID
  115. CP IDNUM(8),=P'0' COMPARE FOR DELIMETER
  116. BE LOOPE END IF DELIMETER
  117. CVB 10,IDNUM CONVERT TO BINARY
  118. ST 10,TEMP PLACE IN TEMP STORAGE
  119. EX 7,IDSTR STORE IN TABLE AS BINARY
  120. LA 3,4(0,3) ADVANCE TABLE POINTER
  121. SR 7,7 CLEAR REGISTER
  122. SR 6,6
  123. ***************FIRST NAME*******************************************
  124. TRT 0(80,9),TRCHAR CHECK FOR NON BLANK CHAR
  125. C 1,=A(MARKER) CHECK EOC
  126. BC B'1010',LOOPT
  127. LR 6,1 STORE ADDRESS OF CHAR
  128. TRT 0(80,1),TRBLANK CHECK AFTER CHAR FOR BLANK
  129. LR 7,1 STORE ADDRESS OF BLANK
  130. LR 9,7
  131. SR 7,6 GET LENGTH
  132. BCTR 7,0 ADJUST
  133. EX 7,FMVC FIRST NAME
  134. LA 3,10(0,3) ADVANCE POINTER
  135. SR 7,7 CLEAR REGISTERS
  136. SR 6,6
  137. ****************LAST NAME*******************************************
  138. TRT 0(80,9),TRCHAR LOOK FOR CHAR
  139. C 1,=A(MARKER)
  140. BC B'1010',LOOPT
  141. LR 6,1 STORE ADDRESS OF CHAR
  142. TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER CHAR
  143. LR 7,1 STORE ADDRESS OF BLANK
  144. LR 9,7
  145. SR 7,6 GET LENGTH
  146. BCTR 7,0 ADJUST LENGTH
  147. EX 7,LMVC LAST NAME
  148. LA 3,12(0,3) ADVANCE POINTER
  149. SR 7,7 CLEAR REGISTERS
  150. SR 6,6
  151. ****************SCORE 1*********************************************
  152. TRT 0(80,9),TRDIGIT SEARCH FOR DIGIT
  153. C 1,=A(MARKER)
  154. BC B'1010',LOOPT
  155. LR 6,1 SAVE ADDRESS OF DIGIT
  156. TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER DIGIT
  157. LR 7,1 STORE ADDRESS OF BLANK
  158. LR 9,7
  159. SR 7,6 GET LENGTH
  160. BCTR 7,0 ADJUST
  161. EX 7,PACKIT PACK IN TABLE(SCORE 1)
  162. LA 3,2(0,3) ADVANCE TABLE POINTER
  163. SR 7,7 CLEAR REGISTERS
  164. SR 6,6
  165. ***************SCORE 2**********************************************
  166. TRT 0(80,9),TRDIGIT
  167. C 1,=A(MARKER)
  168. BC B'1010',LOOPT
  169. LR 6,1
  170. TRT 0(80,1),TRBLANK
  171. LR 7,1
  172. LR 9,7
  173. SR 7,6
  174. BCTR 7,0
  175. EX 7,PACKIT
  176. LA 3,2(0,3)
  177. SR 7,7
  178. SR 6,6
  179. ***************SCORE 3**********************************************
  180. TRT 0(80,9),TRDIGIT
  181. C 1,=A(MARKER)
  182. BC B'1010',LOOPT
  183. LR 6,1
  184. TRT 0(80,1),TRBLANK
  185. LR 7,1
  186. SR 7,6
  187. BCTR 7,0
  188. EX 7,PACKIT
  189. LA 3,2(0,3)
  190. SR 7,7
  191. SR 6,6
  192. **************INCREMENT AND LOOP************************************
  193. A 8,=F'1'
  194. B LOOPT
  195. LOOPE ST 3,0(4) STORE LAST TABLE ADDRESS AT LASTREC
  196. L 13,4(13)
  197. LM 14,12,12(13) EXIT LINKAGE
  198. BR 14 BRANCH TO MAIN
  199. LTORG
  200. BUILDST DS 18F
  201. CARD DS 80C FOR READING RECORDS
  202. MARKER DC CL2' 5'
  203. TRCHAR DC 256X'FF'
  204. ORG TRCHAR+X'40'
  205. DC X'00'
  206. ORG
  207. TRBLANK DC 256X'00'
  208. ORG TRBLANK+X'40'
  209. DC X'FF'
  210. ORG
  211. TRDIGIT DC 256X'00'
  212. ORG TRDIGIT+X'F0'
  213. DC 10X'FF'
  214. ORG
  215. TEMP DS F
  216. TRPTR DS F
  217. IDSTR MVC 0(4,3),TEMP
  218. IDMVC MVC IDNUM(8),0(6)
  219. FMVC MVC 0(10,3),0(6)
  220. LMVC MVC 0(12,3),0(6)
  221. PACKIT PACK 0(2,3),0(0,6)
  222. FNAME DS 10C
  223. LNAME DS 12C
  224. IDNUM DS D
  225. SCORE1 DS 2P
  226. SCORE2 DS 2P
  227. SCORE3 DS 2P
  228. *****************END BUILD************************************
  229. *************PRINT SUBROUTINE*********************************
  230. * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE
  231. * REGISTERS: R1---PARAM LIST
  232. * R2---TABLE POITNER
  233. * R3---EOT POINTER/LAST ENTRY POINTER
  234. * R4---HEADER
  235. * R5---PAGE NUMBER
  236. * R7---VALUE PER LINE COUNTER
  237. * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION
  238. * R10--TABLE VALUE STORED FOR XPRNT
  239. * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS
  240. * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT
  241. * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM
  242. * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2>
  243. * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H
  244. * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP
  245. * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT
  246. * REMAINING VALUES
  247. * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN
  248. ****************************************************************
  249. EJECT
  250. SPACE 3
  251. ******************ENTRY LINKAGE*********************************
  252. PRINT CSECT
  253. STM 14,12,12(13) STORE REGISTERS
  254. LR 12,15 ENTRY LINKAGE
  255. USING PRINT,12
  256. LA 14,PRINTST LOAD STORAGE AREA
  257. ST 14,8(13) ADDRESS HERE
  258. ST 13,4(14) ADDRESS BACK
  259. LR 13,14
  260. ******************SUBROUTINE BODY******************************
  261. LM 2,5,0(1) LOAD PARAMETER LIST
  262. L 3,0(0,3) LOAD EOT
  263. MVC PNUM(2),0(5) LOAD PAGE COUNTER
  264. SR 7,7 INITIALIZE ENTRY/PG COUNTER
  265. MVI LINE+1,C' '
  266. MVC LINE+2(118),LINE+1
  267. AP PNUM,=P'1'
  268. CLI 0(4),C'2' CHECK HEADER ARGUMENT
  269. BE HEADER2
  270. MVC PRNUM(2),=XL2'4020'
  271. EDMK PRNUM(2),PNUM
  272. XPRNT HEAD,75 PRINT HEADER
  273. MVI LINE+1,C' '
  274. MVC LINE+2(118),LINE+1
  275. XPRNT FILLER,80 PRINT COLUMN TITLES
  276. MVI LINE+1,C' '
  277. MVC LINE+2(118),LINE+1
  278. LOOPTOP CR 2,3 TEST FOR EOT
  279. BC B'1000',LOOPBOT IF TRUE END
  280. C 7,=F'21'
  281. BE NEWPAGE
  282. MVC TEMPR(4),0(2)
  283. L 8,TEMPR LOAD ID VAL
  284. CVD 8,IDTEMP CONVERT
  285. MVC IDPRINT(8),IDTEMP
  286. MVC IDPRINT(16),=XL16'40202020202020212020202020202020'
  287. EDMK IDPRINT(16),IDTEMP
  288. *
  289. MVC LPRINT(12),14(2)
  290. MVC FPRINT(10),4(2)
  291. *
  292. MVC SCR1(2),26(2)
  293. MVC SCR2(2),28(2)
  294. MVC SCR3(2),30(2)
  295. MVC SCOR1(4),SCORPAT
  296. EDMK SCOR1(4),SCR1
  297. MVC SCOR2(4),SCORPAT
  298. EDMK SCOR2(4),SCR2
  299. MVC SCOR3(4),SCORPAT
  300. EDMK SCOR3(4),SCR3
  301. XPRNT LINE,83
  302. *
  303. LA 2,32(0,2) ADVANCE TABLE POINTER
  304. A 7,=F'1'
  305. B LOOPTOP
  306. NEWPAGE DS 0H
  307. SR 7,7 RESET COUNTER
  308. CLI 0(4),C'2'
  309. BE HEADER2
  310. AP PNUM,=P'1'
  311. MVC PRNUM(2),=XL2'4020'
  312. EDMK PRNUM(2),PNUM
  313. XPRNT HEAD,75
  314. MVI LINE+1,C' '
  315. MVC LINE+2(118),LINE
  316. XPRNT FILLER,80 PRINT COLUMN TITLES
  317. MVI LINE+1,C' '
  318. MVC LINE+2(118),LINE+1
  319. B LOOPTOP START NEXT LINE
  320. HEADER2 DS 0H
  321. MVI LINE+1,C' '
  322. MVC LINE+2(81),LINE+1
  323. MVC PRNUM2(2),=XL2'4020'
  324. EDMK PRNUM2(2),PNUM
  325. XPRNT HEAD2,75
  326. AP PNUM,=P'1'
  327. MVI LINE+1,C' '
  328. MVC LINE+2(118),LINE+1
  329. XPRNT FILLER,80
  330. MVI LINE+1,C' '
  331. MVC LINE+2(118),LINE+1
  332. B LOOPTOP
  333. LOOPBOT DS 0H
  334. L 9,PNUM
  335. ST 9,0(0,5)
  336. ******************EXIT LINKAGE*********************************
  337. L 13,4(13)
  338. LM 14,12,12(13) EXIT LINKAGE
  339. BR 14 BRANCH TO MAIN
  340. ******************PRINT CONSTANTS******************************
  341. PRINTST DS 18F
  342. PNUM DC PL1'0'
  343. TEMPR DS F
  344. IDTEMP DS D
  345. SCR1 DS 2P
  346. SCR2 DS 2P
  347. SCR3 DS 2P
  348. SCORPAT DC XL4'40202020'
  349. ******************DATA LINE TEMPLATE***************************
  350. LINE DC C'0'
  351. DC 120C' '
  352. ORG LINE+2
  353. IDPRINT DC 16C' '
  354. ORG LINE+20
  355. LPRINT DC 12C' '
  356. ORG LINE+34
  357. FPRINT DC 10C' '
  358. ORG LINE+50
  359. SCOR1 DC 4C' '
  360. ORG LINE+62
  361. SCOR2 DC 4C' '
  362. ORG LINE+74
  363. SCOR3 DC 4C' '
  364. ORG
  365. ******************DATA LINE = 83 ******************************
  366. ******************FILL LINE TEMPLATE***************************
  367. FILLER DC C'-'
  368. DC 120C' '
  369. ORG FILLER+9
  370. DC CL9'ID NUMBER'
  371. ORG FILLER+20
  372. DC CL10'LAST NAME '
  373. ORG FILLER+34
  374. DC CL12'FIRST NAME '
  375. ORG FILLER+50
  376. DC CL7'SCORE 1'
  377. ORG FILLER+61
  378. DC CL7'SCORE 2'
  379. ORG FILLER+72
  380. DC CL7'SCORE 3'
  381. ORG
  382. ********************* FILLER =94C*****************************
  383. ******************HEADER 1************************************
  384. HEAD DC C'1'
  385. DC CL120' '
  386. ORG HEAD+24
  387. DC CL25'INITIAL TABLE OF CONTENTS'
  388. ORG HEAD+64
  389. DC CL6'PAGE: '
  390. ORG HEAD+70
  391. PRNUM DC PL2'0'
  392. ORG
  393. ****************** HEAD = 74C********************************
  394. ******************HEADER 2************************************
  395. HEAD2 DC C'1'
  396. DC CL120' '
  397. ORG HEAD2+24
  398. DC CL25'TABLE AFTER TRANSACTIONS '
  399. ORG HEAD2+64
  400. DC CL6'PAGE: '
  401. ORG HEAD+70
  402. PRNUM2 DS PL2'0'
  403. ORG
  404. ****************** HEAD2 = 74C*******************************
  405. ******************END PRINT***********************************
  406. END PROG7
  407. /*
  408. //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW7DATA,DISP=SHR
  409. //FT06F001 DD SYSOUT=*
  410. //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement