/
BPL030@YU2.RPGLE
246 lines (207 loc) · 11.9 KB
/
BPL030@YU2.RPGLE
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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
**FREE
// H**********************************************************************
// H* *
// H* システム名 :RPG教育 *
// H* サブシステム名 :教育プログラム *
// H* プログラム名 :地区別受注一覧表 *
// H* プログラムID : BPL030 *
// H* 会 社 名 :株式会社中部システム *
// H* *
// H* 作 成 者 :㈱中部システム Y.USHIDA *
// H* 作 成 日 : 2023/05/30 *
// H* 管 理 番 号: CSC-202305-001 *
// H* *
// H* 変 更 者 : *
// H* 変 更 日 : ____/__/__ *
// H* 管 理 番 号: *
// H* *
// H* プログラム特記事項 *
// H* _ *
// H* _ *
// H* *
// H*-*******************************************************************
// H*-*H仕様書 **
// H*-*******************************************************************
CTL-OPT
DATEDIT(*YMD)
DECEDIT('0.')
COPYRIGHT('...')
;
// F*-*******************************************************************
// F*-*F仕様書 **
// F*-*******************************************************************
// F*印刷装置
//DCL-F BPL030P PRINTER OFLIND(*IN80 ) ;
DCL-F BPL030P PRINTER OFLIND(W#FG_OF ) ;
DCL-S W#FG_OF IND ;
// F*受注見出し
DCL-F JUMIDL02 KEYED USAGE(*INPUT ) ;
// F*得意先マスタ
DCL-F TOKMSP KEYED USAGE(*INPUT ) ;
// D*-*******************************************************************
// D*-*D仕様書 **
// D*-*******************************************************************
// D*-********************************************************************
// D*-* KLIST **
// D*-********************************************************************
//受注見出
DCL-DS JUMIDKEY1 LIKEREC(JUMIDR : *KEY ) INZ ;
//得意先マスタ
DCL-DS TOKMSKEY1 LIKEREC(TOKMSR : *KEY ) INZ ;
// D*-********************************************************************
// D*-* テーブル/配列定義 **
// D*-********************************************************************
//地区名称
DCL-S IX ZONED(1:0) ; //指標
DCL-S TIKCOD CHAR(002) DIM(05) PERRCD(01) CTDATA ; //地区コード
DCL-S TIKNAM CHAR(008) DIM(05) ALT(TIKCOD) ; //地区名称
// D*-********************************************************************
// D*-* 変数定義 **
// D*-********************************************************************
//DCL-S WTIMESTAMP TIMESTAMP(*SYS ) ; //タイムスタンプ
DCL-S WTIMESTAMP TIMESTAMP ; //タイムスタンプ
DCL-S WDATE8 ZONED(8:0) ; //日付
DCL-S WTIME6 ZONED(6:0) ; //時刻
DCL-S W#CNTP ZONED(9:0) ; //印刷件数
//------------------
//キーブレイク用
//------------------
DCL-S W@JHTIKU LIKE(JHTIKU ) ; //地区コード
DCL-S W@JHTOKB LIKE(JHTOKB ) ; //得意先番号
// C*-********************************************************************
// C*-* メインルーチン **
// C*-********************************************************************
//初期処理
EXSR @INZ ;
//開始キー位置づけ
JUMIDKEY1.JHTIKU = *LOVAL ; //地区コード
SETLL %KDS(JUMIDKEY1 ) JUMIDR ;
DOW 1 = 1 ;
READ JUMIDR ;
IF %EOF ;
LEAVE ;
ENDIF ;
//初回はブレイクさせない
IF W#CNTP <= *ZERO ;
EXSR @SUM1 ; //集計処理
ITER ;
ENDIF ;
//キーブレイクの判定
IF JHTIKU <> W@JHTIKU ;
EXSR @PTOTAL2 ; //地区計
ELSEIF JHTOKB <> W@JHTOKB ;
EXSR @PTOTAL1 ; //得意先計
ENDIF ;
EXSR @SUM1 ; //集計処理
ENDDO ;
//印刷(見出し※0件の場合
IF W#CNTP <= *ZERO ;
EXSR @PHEAD1 ;
ELSE ;
EXSR @PTOTAL2 ; //地区計
ENDIF ;
//終了処理
EXSR @END ;
// C*-***************************************************************
// C*-* @INZ 初期処理 **
// C*-***************************************************************
BEGSR @INZ ;
//システム日付
WTIMESTAMP = %TIMESTAMP() ;
WDATE8 = %DEC(%DATE(WTIMESTAMP) : *ISO ) ;
WTIME6 = %DEC(%TIME(WTIMESTAMP) : *HMS ) ;
//変数の初期化
//*IN(80) = *ON ; //オーバーフロー標識
W#FG_OF = *ON ; //オーバーフロー標識
W#CNTP = *ZERO ; //印刷件数
CLEAR PHEAD1 ;
CLEAR PTOTAL1 ;
CLEAR PTOTAL2 ;
ENDSR ;
// C*-***************************************************************
// C*-* @PHEAD1 印刷処理(見出し **
// C*-***************************************************************
BEGSR @PHEAD1 ;
//地区名の取得
IX = %LOOKUP( PH1JHTIKU : TIKCOD ) ;
IF IX > *ZERO ;
PH1TIKNAM = TIKNAM(IX) ; //地区名称
ELSE ;
PH1TIKNAM = *ALL'*' ; //地区名称
ENDIF ;
WRITE PHEAD1 ;
//オーバーフロー標識オフ
//*IN(80) = *OFF ; //オーバーフロー標識
W#FG_OF = *OFF ; //オーバーフロー標識
ENDSR ;
// C*-***************************************************************
// C*-* @SUM1 集計処理 **
// C*-***************************************************************
BEGSR @SUM1 ;
PH1JHTIKU = JHTIKU ; //地区コード
PT1JHTOKB = JHTOKB ; //得意先番号
PT1_REC += 1 ; //レコード数
PT1_KING += JHKING ; //受注金額
PT2_REC += 1 ; //レコード数
PT2_KING += JHKING ; //受注金額
W#CNTP += 1 ; //印刷件数
//ブレイクキー退避
W@JHTIKU = JHTIKU ; //地区コード
W@JHTOKB = JHTOKB ; //得意先番号
ENDSR ;
// C*-***************************************************************
// C*-* @PTOTAL1 印刷処理(合計・得意先 **
// C*-***************************************************************
BEGSR @PTOTAL1 ;
//見出し印刷
//IF *IN80 = *ON ;
IF W#FG_OF = *ON ;
EXSR @PHEAD1 ;
ENDIF ;
IF PT1_REC <> *ZERO ;
EVAL(H) PT1_AVR = PT1_KING / PT1_REC ; //平均金額
ENDIF ;
TOKMSKEY1.TKBANG = PT1JHTOKB ; //得意先番号
CHAIN %KDS(TOKMSKEY1 ) TOKMSR ;
IF %FOUND ;
PT1TKNAKJ = TKNAKJ ; //得意先名(漢字
ELSE ;
PT1TKNAKJ = *ALL'*' ; //得意先名(漢字
ENDIF ;
WRITE PTOTAL1 ;
CLEAR PTOTAL1 ;
ENDSR ;
// C*-***************************************************************
// C*-* @PTOTAL2 印刷処理(合計・得意先 **
// C*-***************************************************************
BEGSR @PTOTAL2 ;
//得意先計印刷
EXSR @PTOTAL1 ;
//見出し印刷
//IF *IN80 = *ON ;
IF W#FG_OF = *ON ;
//********* EXSR @PHEAD1 ;
ENDIF ;
IF PT2_REC <> *ZERO ;
EVAL(H) PT2_AVR = PT2_KING / PT2_REC ; //平均金額
ENDIF ;
WRITE PTOTAL2 ;
CLEAR PTOTAL2 ;
//次回改ページ
CLEAR PHEAD1 ;
//*IN(80) = *ON ; //オーバーフロー標識
W#FG_OF = *ON ; //オーバーフロー標識
ENDSR ;
// C*-***************************************************************
// C*-* @END 終了処理 **
// C*-***************************************************************
BEGSR @END ;
*INLR = *ON ;
RETURN ;
ENDSR ;
** TIKCOD/TIKNAM 地区コード/地区名
01北海道
02東北
03北陸
04関東
05関西