naraku9333

Untitled

Jul 18th, 2014
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.76 KB | None | 0 0
  1. //KC03NF2X JOB ,'Sean Vogel',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. *
  8. * Program: ASSIGN5
  9. * Programmer: Sean Vogel
  10. *
  11. * Register Usage:
  12. *
  13. * 1 - used by XDECI/XDECO
  14. * 2 - input number count
  15. * 3 -
  16. * 4 - counter
  17. * 5 - offset
  18. * 6 - DX ptr
  19. * 7 - HX ptr
  20. * 8 -
  21. * 9 -
  22. * 10 - subroutine return address
  23. * 11 -
  24. * 12 -
  25. * 13 -
  26. * 14 -
  27. * 15 -
  28. *
  29. *************************************************
  30. MAIN CSECT
  31. USING MAIN,15
  32. TITLE 'Sean Vogel, CSCI 360, Program 5'
  33. *
  34. LA 1,BLIST
  35. BAL 10,BUILD CALL BUILD
  36. *
  37. XPRNT =CL15'1Table Contents',15
  38. LA 1,=A(TABLE,EOT,ONE,FIVE)
  39. BAL 10,PRINT CALL PRINT
  40. *
  41. LA 1,SLIST
  42. BAL 10,SORT CALL SORT
  43. *
  44. XPRNT =CL20'1Table After Sorting',20
  45. LA 1,=A(TABLE,EOT,ONE,FIVE)
  46. BAL 10,PRINT CALL PRINT
  47. *
  48. SR 4,4 ZERO COUNTER
  49. LA 6,D1 LOAD POINTERS
  50. LA 7,H1
  51. C 4,=F'3'
  52. BNL ENDM
  53. *
  54. * print multiples of D1
  55. L 8,D1
  56. XDECO 8,OUTM+13
  57. XPRNT OUTM,25
  58. MVI OUTM+13,C' ' DESTRUCTIVE
  59. MVC OUTM+14(11),OUTM+13 OVERLAP
  60. LA 1,=A(TABLE,EOT,D1,H1)
  61. BAL 10,PRINT
  62. *
  63. * print multiples of D2
  64. L 8,D2
  65. XDECO 8,OUTM+13
  66. XPRNT OUTM,25
  67. MVI OUTM+13,C' ' DESTRUCTIVE
  68. MVC OUTM+14(11),OUTM+13 OVERLAP
  69. LA 1,=A(TABLE,EOT,D2,H2)
  70. BAL 10,PRINT
  71. *
  72. * print multiples of D3
  73. L 8,D3
  74. XDECO 8,OUTM+13
  75. XPRNT OUTM,25
  76. MVI OUTM+13,C' ' DESTRUCTIVE
  77. MVC OUTM+14(11),OUTM+13 OVERLAP
  78. LA 1,=A(TABLE,EOT,D3,H3)
  79. BAL 10,PRINT
  80. ENDM BR 14
  81. *
  82. *************************************************
  83. *
  84. * DECLARE SUBROUTINES
  85. *
  86. *************************************************
  87. *
  88. *************************************************
  89. *
  90. * BUILD SUBROUTINE
  91. *************************************************
  92. * Register Usage:
  93. *
  94. * 1 - used by XDECI / param list addr
  95. * 2 - param list, table
  96. * 3 - param list, eot
  97. * 4 - address of D1
  98. * 5 - address of H1
  99. * 6 - extracted num, XDECI/XDECO
  100. * 7 -
  101. * 8 -
  102. * 9 -
  103. * 10 - subroutine return address
  104. * 11 -
  105. * 12 -
  106. * 13 -
  107. * 14 -
  108. * 15 -
  109. *
  110. *************************************************
  111. BUILD DS 0H BEGIN BUILD SUBROUTINE
  112. STM 0,15,REGSAVE
  113. LM 2,5,0(1) LOAD PARAM LIST
  114. READLN XREAD INLINE,80 READ A LINE
  115. BL ENDRD
  116. *
  117. LA 1,INLINE
  118. FILLTBL XDECI 6,0(1) GET NEXT NUMBER
  119. BO ENDTBL END OF LINE
  120. C 6,=F'-88888888' CHECK FOR DELIMITER
  121. BE LAST3
  122. CR 2,3 COMPARE TABLE AND EOT
  123. BNL ENDRD QUIT IF TABLE FULL
  124. ST 6,0(2) STORE VALUE IN TABLE
  125. A 2,=F'4' INCREMENT TABLE PTR
  126. B FILLTBL REPEAT INNER LOOP
  127. *
  128. ENDTBL B READLN REPEAT OUTER LOOP
  129. *
  130. LAST3 XREAD INLINE,80 READ A LINE
  131. BL ENDRD
  132. XDECI 6,INLINE GET NEXT NUMBER
  133. BO ELAST
  134. ST 6,0(4) STORE DX
  135. A 4,=F'4' INCREMENT DX PTR
  136. XDECI 6,0(1) GET NEXT NUMBER
  137. BO ELAST
  138. ST 6,0(5)
  139. A 5,=F'4' INCREMENT HX PTR
  140. ELAST B LAST3
  141. *
  142. ENDRD ST 2,0(3) STORE EOT POINTER
  143. LM 0,15,REGSAVE RESTORE REGISTERS
  144. BR 10
  145. *************************************************
  146. * END BUILD
  147. *************************************************
  148. *
  149. *************************************************
  150. *
  151. * PRINT SUBROUTINE
  152. *
  153. *************************************************
  154. * Register Usage:
  155. *
  156. * 1 - param list addr
  157. * 2 - param list, table
  158. * 3 - param list, eot
  159. * 4 - param list, DX
  160. * 5 - param list, HX
  161. * 6 - extracted num, XDECI/XDECO
  162. * 7 - next position in output line
  163. * 8 - counter
  164. * 9 -
  165. * 10 - subroutine return address
  166. * 11 -
  167. * 12 - math
  168. * 13 - math
  169. * 14 -
  170. * 15 -
  171. *
  172. *************************************************
  173. *
  174. PRINT DS 0H
  175. STM 0,15,REGSAVE
  176. LM 2,5,0(1) LOAD PARAM LIST
  177. *
  178. SR 8,8 ZERO COUNTER
  179. LA 7,OUTLNE+1 LOAD LINE PTR
  180. PUT2 C 2,0(3) COMPARE TABLE TO EOT
  181. BNL ENDPRNT
  182. L 13,0(2) PUT NUM IN R5
  183. LR 6,13 COPY NUM TO R6
  184. M 12,=F'1'
  185. D 12,0(4) DIVIDE BY 2
  186. C 12,=F'0' CHECK REMAINDER FOR 0
  187. BNE SKIP1
  188. XDECO 6,0(7) PUT NUMBER ON LINE
  189. A 7,=F'12' INCREMENT OUTLN POSITION
  190. A 8,=F'1' INCREMENT COUNTER
  191. SKIP1 A 2,=F'4' INCREMENT TABLE PTR
  192. C 8,0(5) CHECK IF WE HAVE 5 ON LINE
  193. BL PUT2 REPEAT LOOP
  194. SR 8,8 ZERO COUNTER
  195. LA 7,OUTLNE+1 RELOAD LINE PTR
  196. XPRNT OUTLNE,85 PRINT THE LINE
  197. MVI OUTLNE+1,C' '
  198. MVC OUTLNE+2(83),OUTLNE+1 CLEAR THE LINE
  199. B PUT2 REPEAT LOOP
  200. *
  201. ENDPRNT LM 0,15,REGSAVE
  202. XPRNT OUTLNE,85 PRINT LAST LINE
  203. BR 10
  204. *
  205. *************************************************
  206. * END PRINT
  207. *************************************************
  208. *
  209. *************************************************
  210. *
  211. * SORT SUBROUTINE
  212. *
  213. *************************************************
  214. * Register Usage:
  215. *
  216. * 1 - used by XDECI / param list addr
  217. * 2 - param list, table
  218. * 3 - param list, eot
  219. * 4 -
  220. * 5 - j ptr
  221. * 6 - min ptr
  222. * 7 - value of J
  223. * 8 - value of max
  224. * 9 - value of i
  225. * 10 - subroutine return address
  226. * 11 - temp
  227. * 12 -
  228. * 13 -
  229. * 14 -
  230. * 15 -
  231. *
  232. *************************************************
  233. *
  234. SORT DS 0H
  235. STM 0,15,REGSAVE
  236. LM 2,3,0(1) LOAD PARAM LIST
  237. *
  238. LOOP1 C 2,0(3) CHECK FOR EOT
  239. BNL END1
  240. LR 6,2 MAX = I
  241. LA 5,4(2) J = I + 1
  242. LOOP2 C 5,0(3) CHECK FOR EOT
  243. BNL END2
  244. L 7,0(5) LOAD J VALUE
  245. L 8,0(6) LOAD MAX VALUE
  246. CR 8,7 COMPARE MAX < j
  247. BNL ENDIF
  248. LR 6,5 MAX = J
  249. ENDIF A 5,=F'4' INCREMENT J PTR
  250. B LOOP2 REPEAT LOOP2
  251. END2 L 9,0(2) LOAD I VALUE
  252. L 8,0(6) LOAD MAX VALUE
  253. ST 9,0(0,6) SWAP VALUES
  254. ST 8,0(0,2)
  255. A 2,=F'4' INCREMENT I PTR
  256. B LOOP1 REPEAT LOOP1
  257. END1 DS 0H
  258. LM 0,15,REGSAVE
  259. BR 10
  260. *************************************************
  261. * END SORT
  262. *************************************************
  263. *
  264. *************************************************
  265. * DECLARE VARIABLES
  266. *************************************************
  267. *
  268. TABLE DC 60F'-1'
  269. EOT DS F
  270. *
  271. D1 DC F'0'
  272. D2 DC F'0'
  273. D3 DC F'0'
  274. *
  275. H1 DC F'0'
  276. H2 DC F'0'
  277. H3 DC F'0'
  278. *
  279. INLINE DS CL80
  280. DC CL2' *'
  281. *
  282. OUTLNE DC C'0'
  283. DS 84C' '
  284. *
  285. OUTM DC C'1'
  286. DC CL12'Multiples of'
  287. DS 12C' '
  288. *
  289. REGSAVE DS 16F
  290. *
  291. BLIST DC A(TABLE)
  292. DC A(EOT)
  293. DC A(D1)
  294. DC A(H1)
  295. *
  296. PLIST DC A(TABLE)
  297. DC A(EOT)
  298. DC A(D1)
  299. DC A(H1)
  300. *
  301. SLIST DC A(TABLE)
  302. DC A(EOT)
  303. *
  304. ONE DC F'1'
  305. FIVE DC F'5'
  306. *
  307. END MAIN
  308. *
  309. *
  310. /*
  311. //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW5DATA,DISP=SHR
  312. //FT06F001 DD SYSOUT=*
  313. //
Advertisement
Add Comment
Please, Sign In to add comment