Advertisement
CodenameDuchess

Prog4_ASM90

Oct 28th, 2014
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.07 KB | None | 0 0
  1. //KC03Q15A JOB ,'MATTHEW ROWE',MSGCLASS=H
  2. //***************************************************************
  3. //* *
  4. //* CSCI 465/565 - FALL 2014 *
  5. //* *
  6. //* ASSIGNMENT 4 *
  7. //* *
  8. //* PROGRAMMER: MATTHEW ROWE *
  9. //* *
  10. //* DATE: 10/24/2014 *
  11. //* TIME: 11:59:59 PM *
  12. //* *
  13. //* THE PURPOSE OF THIS JOB IS TO COMPILE AND EXECUTE A *
  14. //* ASSEMBLER PROGRAM TO READ IN A DATA FILES CONTAINING BROKER *
  15. //* AND SHARE INFORMATION TO CONSTRUCT A DAILY SALES REPORT. *
  16. //* *
  17. //***************************************************************
  18. //JSTEP01 EXEC PGM=ASMA90,PARM=ASA
  19. //*
  20. //***************************************************************
  21. //* *
  22. //* JSTEP01 COMPILES THE ASSEMBLER SOURCE CODE. *
  23. //* *
  24. //* DDNAME FILE DESCRIPTION *
  25. //* *
  26. //* STEPLIB INPUT: KC00NIU.SYS2.MACLIB *
  27. //* SYSIN INPUT: INSTREAM DATA FROM PROGRAM *
  28. //* SYSLIB INPUT: SYS1.MACLIB *
  29. //* *
  30. //***************************************************************
  31. //SYSLIB DD DSN=KC00NIU.SYS2.MACLIB,DISP=SHR
  32. // DD DSN=SYS1.MACLIB,DISP=SHR
  33. //SYSIN DD *
  34. *************************ASMPGM CSECT*********************************
  35. * *
  36. * PROGRAM PROG4 *
  37. * AUTHOR GEOFFREY DECKER *
  38. * DATE WRITTEN 06/23/2013 *
  39. * *
  40. * FUNCTION: THIS PROGRAM READS INFORMATION FROM AN INPUT FILE *
  41. * AND SIMPLY PRINTS IT TO THE SCREEN. *
  42. * *
  43. * INPUT: INPUT FILE CONTAINING 80 BYTE BROKER RECORDS *
  44. * INPUT FILE CONTAINING DAILY CLOSE SHARE PRICE *
  45. * *
  46. * OUTPUT: ONE TEMPORARY FILE FOR HIGH SALES RECORD AND *
  47. * ORGANIZED DATA FOR DAILY SALES REPORT TO STDOUT *
  48. * *
  49. **********************************************************************
  50. PROG4 CSECT BEGIN ASMPGM
  51. PRINT NOGEN DO NOT EXPAND MACRO CALLS
  52. *
  53. XSAVE BR=12,SA=MAINSAVE,TR=NO
  54. * STANDARD ENTRY LINKAGE
  55. OPEN (SHAREDCB,(INPUT)) OPEN SHARE PRICE FILE
  56. LTR 15,15 CHECK FOR SUCCESSFUL OPEN
  57. BZ PACKSHR BRANCH IF SUCCESSFUL TO LABEL
  58. ABEND 555,DUMP ABEND IF OPEN FAILS
  59. *
  60. PACKSHR GET SHAREDCB PUT SHARE PRICE IN BUFFER
  61. MVC INBUFFER(80),0(1)
  62. PACK SHRPRICE(3),INBUFFER(5) PACK BUFFER INTO STORAGE
  63. *
  64. CLOSE (SHAREDCB)
  65. *
  66. OPEN (BROKRDCB,(INPUT)) OPEN BROKER FILE FOR READING
  67. LTR 15,15 CHECK FOR SUCCESSFUL OPEN
  68. BZ OPEN1OK BRANCH IF SUCCESSFUL TO LABEL
  69. ABEND 666,DUMP ABEND IF OPEN FAILS
  70. *
  71. OPEN1OK OPEN (LRGSLDCB,(OUTPUT)) OPEN BROKER FILE FOR READING
  72. LTR 15,15 CHECK FOR SUCCESSFUL OPEN
  73. BZ OPEN2OK BRANCH IF SUCCESSFUL TO LABEL
  74. ABEND 777,DUMP ABEND IF OPEN FAILS
  75. *
  76. OPEN2OK OPEN (OUTDCB,(OUTPUT)) OPEN OUTPUT FOR PRINTING
  77. LTR 15,15 CHECK FOR SUCCESSFUL OPEN
  78. BZ OPEN3OK BRANCH IF SUCCESSFUL TO LABEL
  79. ABEND 888,DUMP ABEND IF OPEN FAILS
  80. *
  81. OPEN3OK GET BROKRDCB,INBUFFER GET THE FIRST 80 BYTES
  82. *
  83. DATIME TIME DEC,DATESTR,LINKAGE=SYSTEM,DATETYPE=MMDDYYYY
  84. *
  85. LOOP1 CLI EOFFLAG1,C'Y' CHECK FOR END OF INPUT DATA
  86. *
  87. BE ENDLOOP1 BRANCH OUT OF LOOP IF EOF
  88. *
  89. CP PGCNTR(2),NEWPAGE(2) CHECK IF 15 RECS
  90. BE NEWPG BRANCH TO HEADER PRINT
  91. AP PGCNTR(2),PAGEINC(1) USE R5 AS CNTR FOR NEW PG
  92. *
  93. AP RECS(3),PAGEINC(1) INCREMENT RECORDS
  94. MVC OUTCITY(24),INBUFFER MOVE CITY TO PRINT LINE
  95. MVC OUTBRKR(24),INBUFFER+24 MOVE BROER TO PRINT LINE
  96. *
  97. PACK DEPAMT(6),INBUFFER+48(11) PACK DEPOSIT AMOUNT
  98. *
  99. LA 1,ODEPAMT+11 POINTER IN CASE OF 0 AMOUNT
  100. MVC ODEPAMT(15),DEPPAT SET NUMERIC PATTERN FIELD
  101. EDMK ODEPAMT(15),DEPAMT MOVE DEPOSIT TO PATTERN
  102. BCTR 1,0 MOVE TO FRONT OF DEPOSIT
  103. MVI 0(1),C'$' ADD $ SIGN
  104. *
  105. ZAP SHRAMT(11),DEPAMT(6) PLACE DEPAMT TO GET SHRAMT
  106. SRP SHRAMT,4,0 SHIFT SHARE AMOUNT
  107. DP SHRAMT(11),SHRPRICE(3) DIVIDE TO GET TOTAL SHARES
  108. SRP SHRAMT(8),64-1,5 NEXT 2 INSTRUCTS ROUNDS
  109. SRP SHRAMT(8),1,0 3 PLACES W/ 0 IN 4TH POS.
  110. AP TOTSHRS(7),SHRAMT(8) ADD SHARES SOLD TO TOTAL
  111. CP SHRAMT(8),=P'200000000' CHECK SHARES SOLD
  112. BL CONT BRANCH IF SOLD LARGE AMNT
  113. *
  114. MVC OUTBUF1(24),OUTBRKR
  115. ZAP OUTBUF2(8),SHRAMT(8)
  116. PUT LRGSLDCB
  117. MVC 0(32,1),OUTBUF1
  118. *
  119. CONT DS 0H
  120. MVC OSHRAMT(17),SHRPAT SET PRINT PATTERN
  121. EDMK OSHRAMT(17),SHRAMT PUT SHRAMT IN NUM EDITED FIELD
  122. CLI INBUFFER+59,C'1'
  123. BE COMRT1 IF EQUAL BRANCH TO COM RATE 1
  124. ZAP COMMISS(8),DEPAMT(6)
  125. MP COMMISS(8),COMPCT2(2)
  126. SRP COMMISS(8),1,5
  127. AP TOTCOMS(6),COMMISS(8) ADD COMMISSION TO TOTAL
  128. MVC OCOMM(13),COMPAT
  129. EDMK OCOMM(13),COMMISS
  130. BCTR 1,0 MOVE TO FRONT OF COMMISS
  131. MVI 0(1),C'$' ADD $ SIGN
  132. B PRINTRD BRANCH TO PRINT READY
  133. *
  134. COMRT1 ZAP COMMISS(8),DEPAMT(6)
  135. MP COMMISS(8),COMPCT1(2)
  136. SRP COMMISS(8),1,5
  137. AP TOTCOMS(6),COMMISS(8) ADD COMMISSION TO TOTAL
  138. MVC OCOMM(13),COMPAT
  139. EDMK OCOMM(13),COMMISS
  140. BCTR 1,0 MOVE TO FRONT OF COMMISS
  141. MVI 0(1),C'$' ADD $ SIGN
  142. *
  143. PRINTRD PUT OUTDCB,PRINTLN PUT THE DATA TO SCREEN
  144. *
  145. AP TOTDEPS(7),DEPAMT(6) ADD DEPAMT TO TOTAL
  146. *
  147. *
  148. GET BROKRDCB,INBUFFER GET THE NEXT RECORD
  149. *
  150. B LOOP1 BRANCH TO TOP OF LOOP
  151. *
  152. *
  153. GET BROKRDCB,INBUFFER GET THE NEXT RECORD
  154. *
  155. B LOOP1 BRANCH TO TOP OF LOOP
  156. *
  157. NEWPG DS 0H CLEAR COUNTER REGISTER
  158. SP PGCNTR(2),NEWPAGE(2)
  159. AP PAGECTR(2),PAGEINC(1) INCREMENT PAGE NUMBER
  160. MVC PGNUM(4),PAGEPAT
  161. ED PGNUM(4),PAGECTR PRINT PAGE NUMBER
  162. MVC OUTDATE(13),DATEPAT MOVE DATE INTO FIELD
  163. ED OUTDATE(13),DATESTR+7
  164. PUT OUTDCB,REP1H1 PRINT HEADER LINE 1
  165. MVC OUTTIME(9),TIMEPAT MOVE TIME INTO FIELD
  166. ED OUTTIME(9),DATESTR
  167. PUT OUTDCB,REP1H2 PRINT HEADER LINE 2
  168. PUT OUTDCB,REP1H3 PRINT HEADER LINE 3
  169. PUT OUTDCB,HEADDIV DIVDER LINE OF HYPHENS
  170. B LOOP1 BRANCH TO TOP
  171. *
  172. ENDLOOP1 CLOSE (BROKRDCB) CLOSE THE 3 DCBs
  173. *
  174. PUT OUTDCB,EOR1H1
  175. PUT OUTDCB,EOR1H2
  176. PUT OUTDCB,HEADDIV
  177. *
  178. MVC OTOTREC(6),TOTRPAT
  179. ED OTOTREC(6),RECS
  180. LA 1,OTOTDEP+15 INCASE 0 AMOUNT
  181. MVC OTOTDEP(19),TOTDPAT MOVE TOTAL DEPOSIT TO
  182. EDMK OTOTDEP(19),TOTDEPS PRINT LINE
  183. BCTR 1,0 MOVE TO FRONT OF COMMISS
  184. MVI 0(1),C'$' ADD $ SIGN
  185. MVC OTOTSHR(20),TOTSPAT MOVE TOTAL SHARES TO
  186. EDMK OTOTSHR(20),TOTSHRS PRINT LINE
  187. LA 1,OTOTCOM+11 INCASE OF 0 AMOUNT
  188. MVC OTOTCOM(15),TOTCPAT MOVE TOTAL COMMISSION TO
  189. EDMK OTOTCOM(15),TOTCOMS PRINT LINE
  190. BCTR 1,0 MOVE TO FRONT OF COMMISS
  191. MVI 0(1),C'$' ADD $ SIGN
  192. PUT OUTDCB,EORPRINT PUT THE DATA TO SCREEN
  193. *
  194. CLOSE (LRGSLDCB) CLOSE OUPUT
  195. *
  196. OPEN (LRGSLDCB,(INPUT)) OPEN TEMP FILE FOR READING
  197. LTR 15,15 CHECK FOR SUCCESSFUL OPEN
  198. BZ OPEN40K BRANCH IF SUCCESSFUL TO LABEL
  199. ABEND 999,DUMP ABEND IF OPEN FAILS
  200. *
  201. OPEN40K GET LRGSLDCB
  202. MVC INBFFER(32),0(1)
  203. *
  204. SP RECS(3),RECS(3) RESET ALL COUNTERS TO 0
  205. SP PAGECTR(2),PAGECTR(2)
  206. SP PGCNTR(2),PGCNTR(2)
  207. SP TOTSHRS(7),TOTSHRS(7)
  208. AP PGCNTR(2),NEWPAGE(2) SET TO PRINT HEADER
  209. *
  210. LOOP2 CLI EOFFLAG2,C'Y' CHECK FOR END OF INPUT DATA
  211. *
  212. BE ENDLOOP2 BRANCH OUT OF LOOP IF EOF
  213. *
  214. CP PGCNTR(2),NEWPAGE(2) CHECK IF 15 RECS
  215. BE NEWPG2 BRANCH TO HEADER PRINT
  216. *
  217. AP RECS(3),PAGEINC(1) INCREMENT RECS READ
  218. MVC OBRKR2(24),INBFFER
  219. MVC SHRAMT2(8),INBFFER+24
  220. *
  221. MVC OSHR2(17),SHRPAT
  222. ED OSHR2(17),SHRAMT2
  223. AP TOTSHRS(7),SHRAMT2(8)
  224. *
  225. PUT OUTDCB,PRINT2
  226. GET LRGSLDCB
  227. MVC INBFFER(32),0(1)
  228. B LOOP2
  229. *
  230. NEWPG2 DS 0H CLEAR COUNTER REGISTER
  231. SP PGCNTR(2),NEWPAGE(2)
  232. AP PAGECTR(2),PAGEINC(1) INCREMENT PAGE NUMBER
  233. MVC PGNUM(4),PAGEPAT
  234. ED PGNUM(4),PAGECTR PRINT PAGE NUMBER
  235. MVC OUTDATE(13),DATEPAT MOVE DATE INTO FIELD
  236. ED OUTDATE(13),DATESTR+7
  237. PUT OUTDCB,REP1H1 PRINT HEADER LINE 1
  238. MVC OUTTIME2(7),TIMEPAT MOVE TIME INTO FIELD
  239. ED OUTTIME2(7),DATESTR
  240. PUT OUTDCB,REP2H2 PRINT HEADER LINE 2
  241. PUT OUTDCB,REP2H3 PRINT HEADER LINE 3
  242. PUT OUTDCB,HEADDIV DIVDER LINE OF HYPHENS
  243. B LOOP2 BRANCH TO TOP
  244. *
  245. ENDLOOP2 CLOSE (LRGSLDCB)
  246. *
  247. PUT OUTDCB,EOR2H1
  248. PUT OUTDCB,EOR2H2
  249. PUT OUTDCB,HEADDIV
  250. *
  251. MVC ORECTOT(6),TOTRPAT
  252. ED ORECTOT(6),RECS
  253. MVC OSHRTOT(20),TOTSPAT
  254. EDMK OSHRTOT(20),TOTSHRS
  255. PUT OUTDCB,EOR2
  256. *
  257. XRETURN RC=0,TR=NO STANDARD EXIT LINKAGE
  258. *
  259. LTORG LTORG TO CLEAR LITERALS
  260. *
  261. ***************MAIN STORAGE*************************
  262. *
  263. MAINSAVE DS 18F MAINSAVE FOR STANDARD LINKAGE
  264. *
  265. INBUFFER DC 80C'$' INPUT BUFFER FILL WITH '$'
  266. *
  267. INBFFER DC 32C'$' INPUT BUFFER FILL WITH '$'
  268. *
  269. EOFFLAG1 DC C'N' EOFFLAG FOR BROKER FILE
  270. *
  271. EOFFLAG2 DC C'N' EOFFLAG FOR TEMP FILE
  272. *
  273. SHRPRICE DC PL3'0' SHARE PRICE STORAGE
  274. *
  275. DEPAMT DC PL6'0' DEPOSIT AMOUNT STORAGE
  276. *
  277. SHRAMT DC PL11'0' SHARES SOLD FIELD
  278. *
  279. SHRAMT2 DC PL8'0'
  280. *
  281. TOTDEPS DC PL7'0' TOTAL DEPOSITS FOR DAY
  282. *
  283. TOTSHRS DC PL7'0' TOTAL SHARES SOLD
  284. *
  285. TOTCOMS DC PL6'0' TOTAL COMMISSION FOR DAY
  286. *
  287. COMPCT1 DC PL2'625' 5/8% COMMISSION
  288. *
  289. COMPCT2 DC PL2'875' 7/8% COMMISSION
  290. *
  291. COMMISS DC PL8'0' COMMISSION STORAGE
  292. *
  293. DATESTR DC 4F'0' DATE-TIME STORAGE
  294. *
  295. PAGEINC DC P'1' INCREMENT PAGE AND RECS
  296. *
  297. PAGECTR DC PL2'00' PAGE COUNTER
  298. *
  299. RECS DC PL3'000' RECORD COUNTER
  300. *
  301. NEWPAGE DC PL2'15' CHECKER FOR NEW PAGE
  302. *
  303. PGCNTR DC PL2'15' COUNTER FOR NEW PAGE
  304. *
  305. OUTBUF1 DC 24C' '
  306. OUTBUF2 DC 8C' '
  307. *****************PRINT PATTERNS**********************************
  308. *
  309. COMPAT DC XL13'40206B2020206B2021204B2020'
  310. *
  311. DEPPAT DC XL15'402020206B2020206B2021204B2020'
  312. *
  313. SHRPAT DC XL17'402020206B2020206B2021204B20202020'
  314. *
  315. TOTRPAT DC XL6'402020202020'
  316. *
  317. TOTDPAT DC XL19'4020206B2020206B2020206B2021204B2020'
  318. *
  319. TOTSPAT DC XL20'4020206B2020206B2020206B2021204B20202020'
  320. *
  321. TOTCPAT DC XL15'402020206B2020206B2021204B2020'
  322. *
  323. PAGEPAT DC XL4'40202020'
  324. *
  325. DATEPAT DC XL13'40202120206120206120202020'
  326. *
  327. TIMEPAT DC XL09'4020207A20207A2020'
  328. *
  329. ******************PRINT LINES *********************************
  330. *
  331. PRINTLN DC CL1'0' HOLDS OUTPUT FOR PRINTED REPORT
  332. OUTCITY DS CL24 HOLDS BROKER CITY
  333. DC 9C' ' FILLER
  334. OUTBRKR DS CL24 HOLDS BROKER NAME
  335. DC 9C' ' FILLER
  336. ODEPAMT DS CL15 OUT DEPOSIT AMOUNT
  337. DC 9C' ' FILLER
  338. OSHRAMT DS CL17 OUT SHARE AMOUNT
  339. DC 9C' ' FILLER
  340. OCOMM DS CL16 OUT COMMISSION AMOUNT
  341. *
  342. EORPRINT DC CL1'0' HOLDS DATA FOR WND OF REPORT
  343. OTOTREC DS CL6
  344. DC 10C' ' FILLER
  345. OTOTDEP DS CL19
  346. DC 10C' ' FILLER
  347. OTOTSHR DS CL20
  348. DC 10C' ' FILLER
  349. OTOTCOM DS CL15
  350. DC 45C' ' FILLER TO END OF LINE
  351. *
  352. PRINT2 DC C'0'
  353. OBRKR2 DS CL24
  354. DC 10C' '
  355. OSHR2 DS CL20
  356. DC 78C' '
  357. *
  358. EOR2 DC C'0'
  359. ORECTOT DS CL6
  360. DC 10C' '
  361. OSHRTOT DS CL20
  362. DC 96C' '
  363. *
  364. *****************HEADER PRINTLINES************
  365. *
  366. REP1H1 DC C'1'
  367. OUTDATE DS CL13
  368. DC 31C' ' FILLER
  369. DC CL46'DEWEY, CHEATHAM AND HOWE MUTUAL FUND WORLDWIDE'
  370. DC 31C' ' FILLER
  371. DC CL6'PAGE: '
  372. PGNUM DS 4C
  373. *
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement