-
Notifications
You must be signed in to change notification settings - Fork 9
/
cogs16b.mlc
225 lines (225 loc) · 9.54 KB
/
cogs16b.mlc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
PRINT NOGEN
****************************************************************
* FILENAME: COGS16B.MLC *
* AUTHOR : Bill Qualls/z390 adaption by Anthony Delosa *
* SYSTEM : z390 v1703 *
* REMARKS : Produce report for COGSWORTH INDUSTRIES *
* California's contribution to sales. *
* This is a modification of COGS 13B.MLC and *
* illustrates binary division. *
****************************************************************
START 0
YREGS
BEGIN SUBENTRY
WTO 'COGS16B ... Begin execution'
BAL R10,SETUP
MAIN EQU *
CLI EOFSW,C'Y'
BE EOJ
BAL R10,PROCESS
B MAIN
EOJ EQU *
BAL R10,WRAPUP
WTO 'COGS16B ... Normal end of program'
RETURN
****************************************************************
* SETUP - Those things which happen one time only, *
* before any records are processed. *
****************************************************************
SETUP EQU *
ST R10,SVSETUP
OPEN (INVENTRY,INPUT) Input is EBCDIC
OPEN (REPORT,OUTPUT)
BAL R10,HDGS
BAL R10,READ
L R10,SVSETUP
BR R10
****************************************************************
* HDGS - Print headings. *
****************************************************************
HDGS EQU *
ST R10,SVHDGS
PUT REPORT,HD1
PUT REPORT,HD2
PUT REPORT,HD3
PUT REPORT,HD4
PUT REPORT,HD5
PUT REPORT,HD6
L R10,SVHDGS
BR R10
****************************************************************
* PROCESS - Those things which happen once per record. *
****************************************************************
PROCESS EQU *
ST R10,SVPROC
BAL R10,FORMAT
BAL R10,WRITE
BAL R10,READ
L R10,SVPROC
BR R10
****************************************************************
* FORMAT - Format a single detail line. *
****************************************************************
FORMAT EQU *
ST R10,SVFORM
MVC OREC,BLANKS
MVC ODESC,IDESC
LH R3,ICALIF Determine total units
AH R3,IILL sold for this product
AH R3,IUTAH
AH R3,IWISC R3 = Nationwide
LR R2,R3
A R2,TTOTAL Add nationwide so far
ST R2,TTOTAL and save it back.
CVD R3,DBLWORD Convert to packed
ZAP PK2,DBLWORD for printing.
MVC OTOTAL,=X'40202120'
ED OTOTAL,PK2
LH R5,ICALIF R5 = California only
LR R2,R5
A R2,TCALIF Add California so far
ST R2,TCALIF and save it back.
CVD R5,DBLWORD Convert to packed
ZAP PK2,DBLWORD for printing.
MVC OCALIF,=X'40202120'
ED OCALIF,PK2
M R4,=F'1000' Dividend will be in (R4,R5)
DR R4,R3 Divisor (nationwide) in R3
CVD R5,DBLWORD Quotient is in R5
SRP DBLWORD,64-1,5
ZAP PK2,DBLWORD
MVC OPCT,=X'40202120'
ED OPCT,PK2
MVI OPCT+L'OPCT,PERCENT
L R10,SVFORM
BR R10
****************************************************************
* READ - Read a record. *
****************************************************************
READ EQU *
ST R10,SVREAD
GET INVENTRY,IREC Read a single product record
B READX
ATEND EQU *
MVI EOFSW,C'Y'
READX EQU *
L R10,SVREAD
BR R10
****************************************************************
* WRITE - Write a single detail line. *
****************************************************************
WRITE EQU *
ST R10,SVWRITE
PUT REPORT,OREC Write report line
L R10,SVWRITE
BR R10
****************************************************************
* WRAPUP - Those things which happen one time only, *
* after all records have been processed. *
****************************************************************
WRAPUP EQU *
ST R10,SVWRAP
PUT REPORT,HD6
MVC OREC,BLANKS
MVC ODESC(6),=C'TOTALS'
L R3,TTOTAL R3 = Nationwide total
CVD R3,DBLWORD Convert to packed
ZAP PK2,DBLWORD for printing.
MVC OTOTAL,=X'40202120'
ED OTOTAL,PK2
L R5,TCALIF R5 = California only
CVD R5,DBLWORD Convert to packed
ZAP PK2,DBLWORD for printing.
MVC OCALIF,=X'40202120'
ED OCALIF,PK2
M R4,=F'1000' Dividend will be in (R4,R5)
DR R4,R3 Divisor (nationwide) in R3
CVD R5,DBLWORD Quotient is in R5
SRP DBLWORD,64-1,5
ZAP PK2,DBLWORD
MVC OPCT,=X'40202120'
ED OPCT,PK2
MVI OPCT+L'OPCT,PERCENT
BAL R10,WRITE
CLOSE INVENTRY
CLOSE REPORT
WTO 'COGS16B ... Sales report on REPORT.TXT'
L R10,SVWRAP
BR R10
****************************************************************
* Literals, if any, will go here *
****************************************************************
LTORG
****************************************************************
* File definitions *
****************************************************************
INVENTRY DCB LRECL=28,RECFM=F,MACRF=GM,EODAD=ATEND, X
DDNAME=INVNTBIN
REPORT DCB LRECL=60,RECFM=FT,MACRF=PM, X
DDNAME=REPORT
****************************************************************
* RETURN ADDRESSES *
****************************************************************
SVSETUP DC F'0' SETUP
SVHDGS DC F'0' HDGS
SVPROC DC F'0' PROCESS
SVREAD DC F'0' READ
SVFORM DC F'0' FORMAT
SVWRITE DC F'0' WRITE
SVWRAP DC F'0' WRAPUP
****************************************************************
* Miscellaneous field definitions *
****************************************************************
EOFSW DC CL1'N' End of file? (Y/N)
BLANKS DC CL60' '
TCALIF DC F'0' Grand total for Calif
TTOTAL DC F'0' Grand total nationwide
DBLWORD DC D'0'
PK2 DC PL2'0'
PERCENT EQU C'%'
****************************************************************
* Input record definition *
****************************************************************
DS 0H Force halfword alignment
IREC DS 0CL28 1-28 Inventory record
IDESC DS CL10 1-10 Product description
ICALIF DS H 11-12 Units sold in Calif
IILL DS H 13-14 Units sold in Illinois
IUTAH DS H 15-16 Units sold in Utah
IWISC DS H 17-18 Units sold in Wisconsin
IBEGIN DS H 19-20 Beginning inventory
IPURCH DS H 21-22 Purchases throughout year
IQOH DS H 23-24 Actual quantity on hand
ICOST DS H 25-26 Cost (each) 99V99
ISELL DS H 27-28 Sell for (each) 99V99
****************************************************************
* Output (line) definition *
****************************************************************
OREC DS 0CL60 1-60
ODESC DS CL10 1-10 Product description
DS CL7 11-17
OTOTAL DS CL4 18-21 Units sold Nationwide
DS CL9 22-30
OCALIF DS CL4 31-34 Units sold in Calif
DS CL8 35-42
OPCT DS CL4 43-46 Percent sales from Calif
DS CL14 47-60
****************************************************************
* Headings definitions *
****************************************************************
HD1 DS 0CL60
DC CL60' COGSWORTH INDUSTRIES '
HD2 DS 0CL60
DC CL60' California''s Contribution to Sales'
HD3 DS 0CL60
DC CL60' '
HD4 DS 0CL60
DC CL40' Nationwide California '
DC CL20'Percent of'
HD5 DS 0CL60
DC CL40' Product Sales Sales '
DC CL20' National '
HD6 DS 0CL60
DC CL40'---------- ---------- ---------- '
DC CL20'----------'
END BEGIN