バッチ設計書(プログラム仕様書)【KS60350P】POSメートマスター VS 管理台帳
| 項目 |
内容 |
| プログラムID |
KS60350P(PL/I プロシージャ名:KS60350) |
| プログラム名 |
POSメートマスター VS 管理台帳 |
| 帳票名 |
POSメイトマスター アンマッチリスト(見出し定数 MI102 より) |
| 業務ID |
KS60350P |
| パターンID |
PPB0010P(ファイルのIO(SINGLE) PL/I)/パターン作成 87/04/03、部品 PBB0014P |
| 言語・形態 |
PL/I バッチ(OPTIONS(MAIN))、帳票出力 |
| 使用JOB(参考) |
DAIMNT3J ステップ KS60350P(JOBフロー No.19「POSメート 請求額エラーリスト処理」) |
| 作成元 |
ソース KS60350P.pl1、参考資料 KS60350P.xlsx(現行解析資料) |
| 作成日 |
2026/10/26 |
1. 改訂履歴
| 改定日 |
改定者 |
改定箇所 |
改定内容 |
| 2026/10/26 |
|
全体 |
PL/Iソースより新規作成 |
2. プログラム概要
2.1 機能概要
POSメイト請求額マスター(POSメート・FAXサービス)と管理台帳をマッチングし、締日が違うものをアンマッチリストに出力する。
2.2 処理概要
- POSメート・FAXサービス(INFILE)を先頭から1件ずつ順次読み込む。
- 荷主コードをキーに、管理台帳(VKKANMS)をキー読込する。管理台帳に該当がない荷主は何もせず次のレコードへ進む(リストには出力しない)。
- 管理台帳の締日情報(6件)のうち、正式仮区分=1(本締)の締日と、POSメート側の請求締日(履歴テーブル1件目)を比較する。
- 一致する締日が1件もない場合、POSメート側と管理台帳側の内容を2行1組でアンマッチリストに印字する。18件ごとに改ページして見出しを印字する。
- 終了時に入力件数・出力件数を表示する。
2.3 入出力概要図
flowchart LR
POS[("INFILE<br/>POSメート・FAXサービス<br/>VK32.SSPOSFAX.DTMASTER<br/>VSAM")]
KAN[("VKKANMS<br/>管理台帳<br/>VK47.KANBASED.DTMASTER<br/>VSAM KSDS 可変長 1200/1500")]
PGM["KS60350P<br/>POSメートマスター VS 管理台帳"]
LST[/"OUTFILE<br/>POSメイトマスター アンマッチリスト<br/>SYSOUT=I(FA/165)"/]
SYSOUT[/"SYSOUT(DISPLAY)<br/>入力件数・出力件数"/]
POS -- "順次読込" --> PGM
KAN -- "キー読込(荷主コード)" --> PGM
PGM -- "帳票出力" --> LST
PGM -.-> SYSOUT
3. 入出力ファイル一覧
| No |
DD名 |
ファイル名称 |
入出力 |
編成 |
アクセス |
レコード長 |
エリア |
レイアウト(INCLUDE) |
キー |
定義行 |
| 1 |
INFILE |
POSメート・FAXサービス ※1 |
入力 |
VSAM |
順次読込(KEYED SEQUENTIAL) |
120(読込エリア長) |
INAREA |
SSPOSFAX |
- |
22–23 |
| 2 |
VKKANMS |
管理台帳 |
入力 |
VSAM KSDS |
キー指定読込(KEYED SEQUENTIAL + KEY指定) |
可変長 1200/1500(読込エリア 1500) |
VSAREA |
KANBASED |
登録顧客コード(7桁)← 荷主コード |
24–25 |
| 3 |
OUTFILE |
(名称なし)※2 |
出力 |
順次(SYSOUT) |
順次書出 |
165(1バイト目 ASA 制御文字) |
OUTAREA / MI01〜MI03 / DT01〜DT02 |
なし(プログラム内定義) |
- |
26 |
※1 名称は参考資料(入出力ファイル一覧の INCLUDE 名)による。ソースコメント(8行)では「POSメイト請求額マスター」と記載。
※2 参考資料に名称の記載なし。帳票タイトルは「POSメイトマスター アンマッチリスト」。
参考:JOB DAIMNT3J(ステップ KS60350P)での割当て
| DD名 |
DSN/出力先 |
属性 |
備考 |
| INFILE |
VK32.SSPOSFAX.DTMASTER |
DISP=SHR |
|
| VKKANMS |
VK47.KANBASED.DTMASTER |
DISP=SHR(KEYS(7 0)、RECSZ(1200 1500)) |
同JOBの前ステップ(No.16〜17)で再作成 |
| OUTFILE |
SYSOUT=I |
DCB=(RECFM=FA,LRECL=165) |
|
4. 処理詳細
4.1 初期処理
| 項番 |
処理内容 |
条件・補足 |
行番号 |
| 1.1 |
POSメート・FAXサービス(INFILE)のファイル終了時、終了スイッチ(EOF_SW)を '0'B(終了)にする。 |
ENDFILE条件 |
119–122 |
| 1.2 |
管理台帳(VKKANMS)のキーエラー時、読込キー(VKEY)に HIGH(7) を設定する(管理台帳なしの目印)。 |
KEY条件。ONCODE の判定はない |
123–126 |
| 1.3 |
INFILE・VKKANMS・OUTFILE をオープンする。 |
|
130–132 |
| 1.4 |
POSメート・FAXサービスを1件読み込む。 |
この読込は入力件数に加算しない |
133 |
| 1.5 |
処理日(DATEX)にシステム日時(DATETIME)の3桁目から6桁(YYMMDD)を設定する。 |
見出しの日付に使用 |
134 |
4.2 主処理(POSメート・FAXサービスが終了するまで繰返し:EOF_SW='1'B の間)
| 項番 |
処理名 |
処理内容 |
条件・補足 |
行番号 |
| 2.1 |
キー設定 |
荷主コード(POSQVKEY)を読込キー(VKEY)に設定する。 |
|
139 |
| 2.2 |
管理台帳 読込 |
管理台帳(VKKANMS)を読込キーでキー読込する。 |
該当なし時は1.2により VKEY=HIGH(7) |
140 |
| 2.3 |
管理台帳 存在判定 |
VKEY が HIGH(7) 以外(管理台帳あり)の場合のみ 2.4〜2.11 を行う。HIGH(7)(管理台帳なし)の場合は 2.12 へ進む。 |
管理台帳なしの荷主は出力しない |
141, 192 |
| 2.4 |
処理フラグ初期化 |
処理フラグ(T)に 0 を設定する。 |
|
144 |
| 2.5 |
締日照合 |
I=1〜6 について、締日(KASFSSIX(I))=請求締日(POSQSQDD(1))かつ 正式仮区分(KASFSSAK(I))=1 の要素があれば、処理フラグ(T)に 1 を設定する。 |
POS側は履歴テーブルの1件目のみ。管理台帳側は本締(正式仮区分=1)のみ |
145–149 |
| 2.6 |
アンマッチ判定 |
処理フラグ(T)=0(本締の締日と一度も一致しない)の場合のみ 2.7〜2.11 を行う。 |
T=1 は出力なし |
150, 190 |
| 2.7 |
改ページ |
書き込み回数(LCNT)が18以上の場合、ページ番号(MIPA)に1を加え、見出し日付(DATEP)に処理日(DATEN)を設定し、見出し1〜3行目(MI01・MI02・MI03)を出力して、LCNT を 0 にする。 |
LCNT の初期値は51のため、最初の明細の前に必ず見出しを出力 |
153–166 |
| 2.8 |
書き込み回数加算 |
書き込み回数(LCNT)に1を加える。 |
|
167 |
| 2.9 |
明細1行目 編集・出力 |
明細1行目(DT01:POS側)に 未収扱い店所・荷主コード・区分・請求締日(1件目)・入力更新年月日 を編集し、出力する。 |
5.2 参照 |
168–174 |
| 2.10 |
明細2行目 編集・出力 |
明細2行目(DT02:管理台帳側)に、正式仮区分=1 の要素の締日(DTSM(I))、契約更新年月日(年/月/日)、顧客略名(カナ)を編集し、出力する。 |
正式仮区分≠1 の要素は締日欄を設定しない(8章 No.1) |
175–187 |
| 2.11 |
出力件数加算 |
出力件数(OTCNT)に1を加える。 |
明細2行で1件 |
188 |
| 2.12 |
次レコード読込 |
次のPOSメート・FAXサービスを読み込み、入力件数(INCNT)に1を加える。 |
ファイル終了時も加算後にループ終了(8章 No.6) |
193–194 |
4.3 終了処理
| 項番 |
処理内容 |
条件・補足 |
行番号 |
| 3.1 |
INFILE・VKKANMS・OUTFILE をクローズする。 |
|
199–201 |
| 3.2 |
入力件数・出力件数を表示する。 |
「## KS60350P INCNT = n」「## KS60350P OTCNT = n」 |
202–203 |
| 3.3 |
プログラムを終了する。 |
リターンコードの設定なし |
207 |
4.4 処理フロー
flowchart TD
START(["開始"]) --> ON["ON条件を設定<br/>INFILE 終了/VKKANMS キーエラー"]
ON --> OPEN["INFILE・VKKANMS・OUTFILE をオープン"]
OPEN --> READ1["POSメート・FAXサービス(INFILE)を読込<br/>処理日 ← システム日付(YYMMDD)"]
READ1 --> EOF{"INFILE<br/>終了?"}
EOF -- "No" --> KEY["読込キー ← 荷主コード<br/>管理台帳(VKKANMS)をキー読込"]
KEY --> EX{"管理台帳あり?<br/>(読込キー ≠ HIGH(7))"}
EX -- "No" --> READ2
EX -- "Yes" --> T0["処理フラグ ← 0"]
T0 --> CHK["締日照合(I=1〜6)<br/>締日(I) = 請求締日(1)<br/>かつ 正式仮区分(I) = 1 なら<br/>処理フラグ ← 1"]
CHK --> TJ{"処理フラグ = 0?<br/>(本締の締日と不一致)"}
TJ -- "No" --> READ2
TJ -- "Yes" --> PG{"書き込み回数<br/>≧ 18?"}
PG -- "Yes" --> HEAD["ページ番号 +1<br/>見出し日付 ← 処理日<br/>見出し1〜3行目を出力<br/>書き込み回数 ← 0"]
PG -- "No" --> DT1
HEAD --> DT1["書き込み回数 +1<br/>明細1行目(POS側)を編集・出力"]
DT1 --> DT2["明細2行目(管理台帳側)を編集・出力<br/>締日欄は正式仮区分=1 の要素のみ設定"]
DT2 --> OC["出力件数 +1"]
OC --> READ2["次の INFILE を読込<br/>入力件数 +1"]
READ2 --> EOF
EOF -- "Yes" --> CLOSE["3ファイルをクローズ"]
CLOSE --> DISP[/"入力件数・出力件数を表示"/]
DISP --> FIN(["終了"])
締日照合と明細2行目の締日欄編集
flowchart TD
S(["締日照合 開始"]) --> INIT["処理フラグ ← 0<br/>I ← 1"]
INIT --> C1{"締日(I) = 請求締日(1)<br/>かつ 正式仮区分(I) = 1?"}
C1 -- "Yes" --> F1["処理フラグ ← 1"]
C1 -- "No" --> NX
F1 --> NX{"I < 6?"}
NX -- "Yes" --> INC["I +1"]
INC --> C1
NX -- "No" --> J{"処理フラグ = 0?"}
J -- "No" --> SKIP(["出力なし(次レコードへ)"])
J -- "Yes" --> E1["I ← 1"]
E1 --> C2{"正式仮区分(I) = 1?"}
C2 -- "Yes" --> SET["明細の締日欄(I) ← 締日(I)"]
C2 -- "No" --> KEEP["何もしない<br/>(前回の値が残る)"]
SET --> N2{"I < 6?"}
KEEP --> N2
N2 -- "Yes" --> INC2["I +1"]
INC2 --> C2
N2 -- "No" --> OUT(["明細2行目を出力"])
キーエラー時の処理(ON KEY 条件)
flowchart TD
K(["KEY条件発生<br/>VKKANMS"]) --> SW["読込キー(VKEY) ← HIGH(7)"]
SW --> RET(["処理続行<br/>(主処理で管理台帳なしと判定し、出力せずに次レコードへ)"])
5. 出力編集仕様(帳票:POSメイトマスター アンマッチリスト / OUTFILE)
5.1 帳票の基本仕様
| 項目 |
内容 |
行番号 |
| 帳票名 |
POSメイトマスター アンマッチリスト |
42 |
| レコード長 |
165バイト(1バイト目は ASA 制御文字、印字部164バイト) |
38 |
| 出力単位 |
アンマッチ1件につき明細2行(1行目:POS側、2行目:管理台帳側) |
168–187 |
| 出力順 |
POSメート・FAXサービスの読込順 |
138, 193 |
| 改ページ |
明細18件ごと(5.4 参照) |
153 |
| 合計行 |
なし(件数は DISPLAY のみ) |
202–203 |
| 該当なしの場合 |
見出しを含め何も出力しない |
153 |
5.2 行別項目定義
位置はレコード先頭(ASA 制御文字)を1とした値。出力エリアの各項目は参考資料に日本語名称の記載がないため「(名称なし)」とし、内容欄に意味を記載する。
見出し1行目(MI01)(定義行 39–48、出力行 158–159)
| 変数名 |
日本語名称 |
位置 |
長さ |
属性 |
内容・編集元 |
| MI101 |
(名称なし) |
1 |
1 |
CHAR |
'1'(ASA:改ページ) |
| MI102 |
(名称なし) |
2 |
60 |
CHAR(混在文字) |
' (KS60350P) *** POSメイトマスター アンマッチリスト***'(タイトル) |
| MI103 |
(名称なし) |
62 |
10 |
CHAR |
空白 |
| DATEP |
(名称なし) |
72 |
8 |
PIC'99/99/99' |
処理日(DATEN:YY/MM/DD) |
| MI104 |
(名称なし) |
80 |
74 |
CHAR |
空白 |
| MI105 |
(名称なし) |
154 |
6 |
CHAR |
'PAGE :' |
| MIPA |
(名称なし) |
160 |
4 |
PIC'ZZZ9' |
ページ番号 |
| MI106 |
(名称なし) |
164 |
2 |
CHAR |
空白 |
見出し2行目(MI02)(定義行 49–55、出力行 160–161)
| 変数名 |
日本語名称 |
位置 |
長さ |
属性 |
内容・編集元 |
| MI201 |
(名称なし) |
1 |
1 |
CHAR |
'0'(ASA:1行空けて印字) |
| MI202 |
(名称なし) |
2 |
55 |
CHAR(混在文字) |
' T-CD NI-CODE KB 締日 … 更新日'(POS側の項目見出し) |
| MI203 |
(名称なし) |
57 |
109 |
CHAR(混在文字) |
'(POS)' |
見出し3行目(MI03)(定義行 56–62、出力行 162–163)
| 変数名 |
日本語名称 |
位置 |
長さ |
属性 |
内容・編集元 |
| MI301 |
(名称なし) |
1 |
1 |
CHAR |
空白(ASA:改行して印字) |
| MI302 |
(名称なし) |
2 |
55 |
CHAR(混在文字) |
'… 締日 … 更新日'(管理台帳側の項目見出し) |
| MI303 |
(名称なし) |
57 |
109 |
CHAR(混在文字) |
'(管理台帳) NI-NAME' |
明細1行目(DT01):POS側(定義行 64–75、編集行 168–173、出力行 174)
| 変数名 |
日本語名称 |
位置 |
長さ |
属性 |
見出し |
内容・編集元 |
| DT101 |
(名称なし) |
1 |
2 |
CHAR |
|
'0'+空白(ASA:1行空けて印字) |
| DTTNCD |
(名称なし) |
3 |
4 |
CHAR |
T-CD |
未収扱い店所(POSQTNCD) |
| DT102 |
(名称なし) |
7 |
3 |
CHAR |
|
空白 |
| DTNICD |
(名称なし) |
10 |
7 |
CHAR |
NI-CODE |
荷主コード(POSQVKEY) |
| DT103 |
(名称なし) |
17 |
3 |
CHAR |
|
空白 |
| DTKUBN |
(名称なし) |
20 |
1 |
PIC'(1)9' |
KB |
区分(POSFAXKB)(1:POSメート 2:FAXサービス 3:サポートII) |
| DT104 |
(名称なし) |
21 |
3 |
CHAR |
|
空白 |
| DTSIME |
(名称なし) |
24 |
2 |
PIC'ZZ' |
締日 |
請求締日(POSQSQDD(1))。ゼロサプレス |
| DT105 |
(名称なし) |
26 |
23 |
CHAR |
|
空白 |
| DTYMD1 |
(名称なし) |
49 |
8 |
PIC'99/99/99' |
更新日 |
入力更新年月日(POSQIYMD) |
| DT106 |
(名称なし) |
57 |
109 |
CHAR |
|
空白 |
明細2行目(DT02):管理台帳側(定義行 76–87、編集行 175–186、出力行 187)
| 変数名 |
日本語名称 |
位置 |
長さ |
属性 |
見出し |
内容・編集元 |
| DT201 |
(名称なし) |
1 |
21 |
CHAR |
|
空白(1バイト目は ASA:改行して印字) |
| DTSM(1〜6) |
(名称なし) |
22 |
4×6=24 |
PIC'ZZZZ' |
締日 |
締日(KASFSSIX(I))。正式仮区分(KASFSSAK(I))=1 の要素のみ設定。初期値なし |
| DT202 |
(名称なし) |
46 |
3 |
CHAR |
|
空白 |
| DTYY2 |
(名称なし) |
49 |
2 |
PIC'99' |
更新日 |
契約更新年月日の年(KAHNKMYY) |
| DTSP1 |
(名称なし) |
51 |
1 |
CHAR |
|
'/' |
| DTMM2 |
(名称なし) |
52 |
2 |
PIC'99' |
|
契約更新年月日の月(KAHNKMMM) |
| DTSP2 |
(名称なし) |
54 |
1 |
CHAR |
|
'/' |
| DTDD2 |
(名称なし) |
55 |
2 |
PIC'99' |
|
契約更新年月日の日(KAHNKMDD) |
| DT203 |
(名称なし) |
57 |
16 |
CHAR |
|
空白 |
| DTNAM |
(名称なし) |
73 |
14 |
CHAR |
NI-NAME |
顧客略名(カナ)(KATNRCNM) |
| DT204 |
(名称なし) |
87 |
79 |
CHAR |
|
空白 |
- 見出しの日本語部分はシフトコード(SO/SI 各1バイト)を含む混在文字定数(接尾辞 M)で定義されている。
- 各行とも OUTAREA(CHAR(165))に STRING 組込み関数で転送してから出力する(158, 160, 162, 173, 186)。
5.3 印字イメージ
1行目・2行目はカラム位置(ASA 制御文字を1桁目とする)。1桁目は ASA 制御文字そのものを示す。空行は ASA '0' による1行空け。全角文字は2桁、シフトコードは空白1桁で表示している。最後の2行は印字例。
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
1 (KS60350P) *** POSメイトマスター アンマッチリスト *** YY/MM/DD PAGE :ZZZ9
0 T-CD NI-CODE KB 締日 更新日 (POS)
締日 更新日 (管理台帳) NI-NAME
0 XXXX XXXXXXX 9 ZZ 99/99/99
ZZZZZZZZZZZZZZZZZZZZZZZZ 99/99/99 XXXXXXXXXXXXXX
0 1234 1234567 1 20 26/10/20
20 25 99 26/04/01 サンプルショウジ
- 明細1行目の「締日」はPOS側の請求締日、「更新日」は入力更新年月日。
- 明細2行目の「締日」欄は締日(KASFSSIX)を4桁×6欄で印字する(正式仮区分=1 の欄のみ設定)。「更新日」は管理台帳の契約更新年月日。
5.4 改ページ
| 項目 |
内容 |
行番号 |
| 判定 |
明細を出力する直前に、書き込み回数(LCNT)≧ 18 なら改ページ |
153 |
| 改ページ時の処理 |
ページ番号(MIPA)+1、見出し日付(DATEP)← 処理日、見出し1〜3行目を出力、LCNT ← 0 |
156–164 |
| 初回 |
LCNT の初期値が51のため、最初のアンマッチ明細の前に見出しを出力する |
98 |
| 1ページの構成 |
見出し(タイトル行+空行+見出し2行)+明細18件(1件=空行+2行)=58行 |
153–187 |
| ページ番号 |
1から開始(MIPA 初期値0に加算) |
47, 156 |
flowchart TD
A(["アンマッチ明細の出力"]) --> B{"書き込み回数 ≧ 18?"}
B -- "Yes" --> C["ページ番号 +1<br/>見出し日付 ← 処理日"]
C --> D["見出し1行目(ASA '1':改ページ)<br/>見出し2行目(ASA '0')<br/>見出し3行目(ASA ' ')を出力"]
D --> E["書き込み回数 ← 0"]
B -- "No" --> F
E --> F["書き込み回数 +1"]
F --> G["明細1行目(ASA '0')・明細2行目(ASA ' ')を出力"]
5.5 項目単位の対応表
付録A を参照。
6. メッセージ一覧(DISPLAY)
| No |
メッセージ |
出力条件 |
意味 |
後続処理 |
行番号 |
| 1 |
## KS60350P INCNT = (入力件数:ZZZ,ZZZ,ZZ9) |
終了時 |
POSメート・FAXサービスの読込件数 |
- |
202 |
| 2 |
## KS60350P OTCNT = (出力件数:ZZZ,ZZZ,ZZ9) |
終了時 |
アンマッチとして印字した件数(明細2行で1件) |
- |
203 |
エラーメッセージはない(キーエラーはメッセージなしで続行、その他の例外は ON ユニット未定義)。
7. 変数一覧
| No |
変数名 |
日本語名称 |
属性 |
初期値 |
用途 |
定義行 |
| 1 |
INFILE |
POSメート・FAXサービス |
FILE RECORD KEYED SEQUENTIAL BUFFERED INPUT ENV(VSAM) |
|
POSメート・FAXサービスの順次読込 |
22–23 |
| 2 |
VKKANMS |
管理台帳 |
FILE RECORD KEYED SEQUENTIAL BUFFERED INPUT ENV(VSAM) |
|
荷主コードによるキー読込 |
24–25 |
| 3 |
OUTFILE |
(名称なし) |
FILE RECORD OUTPUT |
|
アンマッチリストの出力 |
26 |
| 4 |
INAREA |
(名称なし) |
構造体(SSPOSFAX)120バイト |
|
POSメート・FAXサービスの読込エリア |
30–31 |
| 5 |
OUTAREA |
(名称なし) |
CHAR(165) |
|
印字行の出力エリア |
38 |
| 6 |
MI01 |
(名称なし) |
構造体 165バイト |
各項目 INIT |
見出し1行目(5.2参照) |
39–48 |
| 7 |
MI02 |
(名称なし) |
構造体 165バイト |
各項目 INIT |
見出し2行目(5.2参照) |
49–55 |
| 8 |
MI03 |
(名称なし) |
構造体 165バイト |
各項目 INIT |
見出し3行目(5.2参照) |
56–62 |
| 9 |
DT01 |
(名称なし) |
構造体 165バイト |
各項目 INIT |
明細1行目(5.2参照) |
64–75 |
| 10 |
DT02 |
(名称なし) |
構造体 165バイト |
DTSM 以外 INIT |
明細2行目(5.2参照) |
76–87 |
| 11 |
EOF_SW |
(名称なし) |
BIT(1) STATIC |
'1'B |
INFILE 終了スイッチ('1'B:継続、'0'B:終了) |
94 |
| 12 |
VKEY |
(名称なし) |
CHAR(7) |
|
管理台帳の読込キー。キーエラー時 HIGH(7) |
97 |
| 13 |
LCNT |
書き込み回数 |
PIC'999' |
51 |
ページ内の明細件数(18件ごとに改ページ) |
98 |
| 14 |
INCNT |
(名称なし) |
PIC'ZZZ,ZZZ,ZZ9' |
0 |
入力件数 |
99 |
| 15 |
OTCNT |
(名称なし) |
PIC'ZZZ,ZZZ,ZZ9' |
0 |
出力件数 |
100 |
| 16 |
DATEX |
(名称なし) |
CHAR(6) |
' ' |
処理日(YYMMDD) |
101 |
| 17 |
DATEN |
(名称なし) |
PIC'(6)9' DEF DATEX |
|
処理日(数字再定義)。見出し日付へ設定 |
102 |
| 18 |
I |
(名称なし) |
FIXED BIN(15) |
0 |
締日情報の添字(1〜6) |
103 |
| 19 |
T |
処理フラグ |
FIXED BIN(15) |
0 |
締日照合結果(0:一致なし、1:一致あり) |
104 |
| 20 |
VSAREA |
(名称なし) |
構造体(KANBASED)1500バイト |
|
管理台帳の読込エリア |
111–112 |
| 21 |
ADDR, SUBSTR, HIGH, LOW, LENGTH, STRING, VERIFY, UNSPEC, DATETIME |
(名称なし) |
BUILTIN |
|
組込み関数(使用は SUBSTR・HIGH・STRING・DATETIME のみ) |
95–96 |
※ 日本語名称は参考資料による。LCNT・T の名称は参考資料 SRC シートの備考による。参考資料に記載のない変数は「(名称なし)」とした。
7.1 本プログラムで参照するレイアウト項目
| 変数名 |
日本語名称 |
所属レイアウト |
位置 |
属性・桁 |
用途 |
行番号 |
| POSQVKEY |
荷主コード |
SSPOSFAX(POSメート・FAXサービス) |
1 |
数字 7 |
管理台帳の読込キー、明細1行目 NI-CODE |
139, 169 |
| POSFAXKB |
区分 |
SSPOSFAX |
8 |
数字 1(1:POSメート 2:FAXサービス 3:サポートII) |
明細1行目 KB |
170 |
| POSQTNCD |
未収扱い店所 |
SSPOSFAX |
9 |
数字 4 |
明細1行目 T-CD |
168 |
| POSQGROP |
履歴テーブル |
SSPOSFAX |
14 |
集団 22バイト×3 |
(POSQSQDD の上位項目) |
- |
| POSQSQDD(1) |
請求締日 |
SSPOSFAX(履歴テーブル1件目) |
34 |
数字 2 |
締日照合、明細1行目 締日 |
146, 171 |
| POSQIYMD |
入力更新年月日 |
SSPOSFAX |
96 |
数字 6 |
明細1行目 更新日 |
172 |
| KACUSTCD |
登録顧客コード |
KANBASED(管理台帳) |
1 |
数字 7 |
管理台帳のキー(KEYS(7 0))。ソース上は直接参照しない |
(140) |
| KASFSMKB |
締日情報 |
KANBASED |
256 |
集団 3バイト×6 |
(KASFSSIX・KASFSSAK の上位項目) |
- |
| KASFSSIX(1〜6) |
締日 |
KANBASED |
256, 259, 262, 265, 268, 271 |
数字 2(月末=99) |
締日照合、明細2行目 締日 |
146, 177 |
| KASFSSAK(1〜6) |
正式仮区分 |
KANBASED |
258, 261, 264, 267, 270, 273 |
数字 1(1:本締、2:仮締) |
締日照合・締日欄設定の条件 |
146, 176 |
| KAHKYMNT |
契約更新年月日 |
KANBASED |
789 |
集団 6 |
(KAHNKMYY〜KAHNKMDD の上位項目) |
- |
| KAHNKMYY |
年 |
KANBASED(契約更新年月日) |
789 |
数字 2 |
明細2行目 更新日(年) |
180 |
| KAHNKMMM |
月 |
KANBASED(契約更新年月日) |
791 |
数字 2 |
明細2行目 更新日(月) |
181 |
| KAHNKMDD |
日 |
KANBASED(契約更新年月日) |
793 |
数字 2 |
明細2行目 更新日(日) |
182 |
| KATNRCNM |
顧客略名 (カナ) |
KANBASED |
557 |
文字 14 |
明細2行目 NI-NAME |
185 |
- 参照する管理台帳の項目はすべて799バイト目までにあり、1200バイト・1500バイトどちらのレコードにも含まれる。
8. 留意事項(ソース解析で判明した事項)
| No |
区分 |
内容 |
行番号 |
| 1 |
潜在不具合 |
明細2行目の締日欄(DTSM(1〜6))は、正式仮区分=1 の要素だけ設定し、それ以外の要素は設定もクリアもしない。DTSM には初期値(INIT)もない。このため、本締でない欄には前に印字した明細の締日がそのまま残り、最初の明細では不定値が印字される可能性がある。本締でない欄は空白にするのが意図と考えられる。 |
78, 175–179 |
| 2 |
突合せ |
管理台帳に存在しない荷主は、印字も件数表示もせずにスキップする。帳票名は「アンマッチリスト」だが、検出対象は締日の不一致だけである。 |
141, 192 |
| 3 |
例外処理 |
KEY条件で ONCODE を判定していないため、該当キーなし以外のキーエラーも「管理台帳なし」と同じ扱いでスキップされ、検知できない。KEY以外の入出力エラー・CONVERSION 等には ON ユニットがなく、PL/I の標準動作(異常終了)となる。リターンコードは設定していない。 |
123–126 |
| 4 |
突合せ |
POS側は履歴テーブル(POSQGROP、3件)のうち1件目の請求締日(POSQSQDD(1))だけを比較・印字する。2・3件目は参照しない。 |
146, 171 |
| 5 |
突合せ |
管理台帳側は正式仮区分=1(本締)の締日だけを比較対象とする。仮締(2)の締日とだけ一致する荷主はアンマッチとして出力される。 |
146 |
| 6 |
件数 |
入力件数(INCNT)は1件目の読込(133行)では加算せず、ループ内の読込後に加算する。ファイル終了となった読込でも加算されるため、結果として読込件数と一致する(入力0件なら0)。 |
133, 193–194 |
| 7 |
帳票 |
明細2行目の「更新日」は管理台帳の契約更新年月日(KAHKYMNT)であり、明細1行目のPOS側「更新日」(入力更新年月日 POSQIYMD)とは意味が異なる。見出しはどちらも「更新日」。 |
172, 180–182 |
| 8 |
ファイル |
管理台帳は可変長(1200/1500)だが、読込エリア VSAREA は1500バイト固定。1200バイトのレコードでは後半300バイトに前レコードの内容が残るが、参照項目は799バイト目までのため影響しない。レコード長の違いで RECORD 条件が出るかは処理系による(ON RECORD なし)。 |
111–112, 140 |
| 9 |
ファイル |
管理台帳は KEYED SEQUENTIAL で宣言し、READ … KEY でランダムに読んでいる(KEYED DIRECT ではない)。キーエラー時、VSAREA は前の荷主の内容のままだが参照しない。 |
24–25, 140 |
| 10 |
データ |
締日・正式仮区分などは数字(PIC'9')項目として数値比較・編集する。数字以外(空白等)が入っていると CONVERSION 条件が発生し得る。 |
146, 176–182 |
| 11 |
帳票 |
アンマッチが1件もない場合、見出しも出力せず帳票は0行となる。結果はジョブログの出力件数(OTCNT)で確認する。 |
153, 203 |
| 12 |
帳票 |
処理日・更新日とも年は2桁(YY)で印字する(処理日は DATETIME の3桁目から6桁)。ページ番号は PIC'ZZZ9'(最大9999)。 |
44, 47, 134 |
| 13 |
資料差異 |
参考資料の SRC シートでは141行が IF VKEY = HIGH(7) となっているが、ソースは IF VKEY ¬= HIGH(7)(否定記号が欠落)。変数定義シートの MI106・DT101・DT105・DT201 の桁、I の属性、INCNT・OTCNT の PICTURE も取込み時に欠けている。本書はソースを正とした。 |
141, 48, 65, 73, 77, 99–100, 103 |
| 14 |
名称 |
入力ファイルの名称が資料ごとに異なる:ソースコメント「POSメイト請求額マスター」、参考資料「POSメート・FAXサービス」、JCLコメント「POSメート 請求額エラーリスト処理」。プログラム名も参考資料「POSメートマスター VS 管理台帳」と帳票タイトル「POSメイトマスター アンマッチリスト」で異なる。 |
8, 42 |
| 15 |
未使用定義 |
組込み関数 ADDR/LOW/LENGTH/VERIFY/UNSPEC は宣言のみで使っていない。SSPOSFAX の請求精算区分・有償台数・無償台数・請求額・その他料金・開始年月日・請求精算NO・前回請求処理年月日等も参照しない。 |
95 |
付録A 項目対応表
A.1 帳票印字項目対応表(OUTFILE ← 編集元)
位置はレコード先頭(ASA 制御文字)を1とした値。編集元の位置は各レイアウト先頭を1とした値(参考資料による)。
| # |
行 |
位置 |
長さ |
変数名 |
日本語名称 |
属性 |
見出し |
編集元 |
編集元項目 |
編集元位置 |
編集内容・備考 |
行番号 |
| 1 |
見出し1 |
1 |
1 |
MI101 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'1'(ASA:改ページ) |
40 |
| 2 |
見出し1 |
2 |
60 |
MI102 |
(名称なし) |
CHAR |
|
定数 |
- |
|
タイトル (KS60350P) *** POSメイトマスター アンマッチリスト***
|
41–42 |
| 3 |
見出し1 |
62 |
10 |
MI103 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
43 |
| 4 |
見出し1 |
72 |
8 |
DATEP |
(名称なし) |
PIC'99/99/99' |
|
ワーク |
DATEN(DATETIME の YYMMDD) |
|
処理日 YY/MM/DD |
44, 134, 157 |
| 5 |
見出し1 |
80 |
74 |
MI104 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
45 |
| 6 |
見出し1 |
154 |
6 |
MI105 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'PAGE :' |
46 |
| 7 |
見出し1 |
160 |
4 |
MIPA |
(名称なし) |
PIC'ZZZ9' |
|
ワーク |
改ページごとに+1 |
|
ページ番号 |
47, 156 |
| 8 |
見出し1 |
164 |
2 |
MI106 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
48 |
| 9 |
見出し2 |
1 |
1 |
MI201 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'0'(ASA:1行空け) |
50 |
| 10 |
見出し2 |
2 |
55 |
MI202 |
(名称なし) |
CHAR |
|
定数 |
- |
|
T-CD NI-CODE KB 締日 … 更新日 |
51–52 |
| 11 |
見出し2 |
57 |
109 |
MI203 |
(名称なし) |
CHAR |
|
定数 |
- |
|
(POS) |
54–55 |
| 12 |
見出し3 |
1 |
1 |
MI301 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白(ASA:改行) |
57 |
| 13 |
見出し3 |
2 |
55 |
MI302 |
(名称なし) |
CHAR |
|
定数 |
- |
|
… 締日 … 更新日 |
58–59 |
| 14 |
見出し3 |
57 |
109 |
MI303 |
(名称なし) |
CHAR |
|
定数 |
- |
|
(管理台帳) NI-NAME |
61–62 |
| 15 |
明細1 |
1 |
2 |
DT101 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'0'+空白(ASA:1行空け) |
65 |
| 16 |
明細1 |
3 |
4 |
DTTNCD |
(名称なし) |
CHAR |
T-CD |
POSメート・FAXサービス |
未収扱い店所(POSQTNCD) |
9 |
転記 |
168 |
| 17 |
明細1 |
7 |
3 |
DT102 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
67 |
| 18 |
明細1 |
10 |
7 |
DTNICD |
(名称なし) |
CHAR |
NI-CODE |
POSメート・FAXサービス |
荷主コード(POSQVKEY) |
1 |
転記 |
169 |
| 19 |
明細1 |
17 |
3 |
DT103 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
69 |
| 20 |
明細1 |
20 |
1 |
DTKUBN |
(名称なし) |
PIC'(1)9' |
KB |
POSメート・FAXサービス |
区分(POSFAXKB) |
8 |
転記/1:POSメート 2:FAXサービス 3:サポートII |
170 |
| 21 |
明細1 |
21 |
3 |
DT104 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
71 |
| 22 |
明細1 |
24 |
2 |
DTSIME |
(名称なし) |
PIC'ZZ' |
締日 |
POSメート・FAXサービス |
請求締日(POSQSQDD(1)) |
34 |
ゼロサプレス編集(履歴テーブル1件目) |
171 |
| 23 |
明細1 |
26 |
23 |
DT105 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
73 |
| 24 |
明細1 |
49 |
8 |
DTYMD1 |
(名称なし) |
PIC'99/99/99' |
更新日 |
POSメート・FAXサービス |
入力更新年月日(POSQIYMD) |
96 |
99/99/99 編集 |
172 |
| 25 |
明細1 |
57 |
109 |
DT106 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
75 |
| 26 |
明細2 |
1 |
21 |
DT201 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白(1桁目 ASA:改行) |
77 |
| 27 |
明細2 |
22 |
4 |
DTSM(1) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(1)) |
256 |
正式仮区分(KASFSSAK(1):258)=1 の場合のみ設定。ゼロサプレス |
176–177 |
| 28 |
明細2 |
26 |
4 |
DTSM(2) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(2)) |
259 |
正式仮区分(KASFSSAK(2):261)=1 の場合のみ設定 |
176–177 |
| 29 |
明細2 |
30 |
4 |
DTSM(3) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(3)) |
262 |
正式仮区分(KASFSSAK(3):264)=1 の場合のみ設定 |
176–177 |
| 30 |
明細2 |
34 |
4 |
DTSM(4) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(4)) |
265 |
正式仮区分(KASFSSAK(4):267)=1 の場合のみ設定 |
176–177 |
| 31 |
明細2 |
38 |
4 |
DTSM(5) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(5)) |
268 |
正式仮区分(KASFSSAK(5):270)=1 の場合のみ設定 |
176–177 |
| 32 |
明細2 |
42 |
4 |
DTSM(6) |
(名称なし) |
PIC'ZZZZ' |
締日 |
管理台帳 |
締日(KASFSSIX(6)) |
271 |
正式仮区分(KASFSSAK(6):273)=1 の場合のみ設定 |
176–177 |
| 33 |
明細2 |
46 |
3 |
DT202 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
79 |
| 34 |
明細2 |
49 |
2 |
DTYY2 |
(名称なし) |
PIC'99' |
更新日 |
管理台帳 |
年(KAHNKMYY)※契約更新年月日 |
789 |
転記 |
180 |
| 35 |
明細2 |
51 |
1 |
DTSP1 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'/' |
183–184 |
| 36 |
明細2 |
52 |
2 |
DTMM2 |
(名称なし) |
PIC'99' |
|
管理台帳 |
月(KAHNKMMM)※契約更新年月日 |
791 |
転記 |
181 |
| 37 |
明細2 |
54 |
1 |
DTSP2 |
(名称なし) |
CHAR |
|
定数 |
- |
|
'/' |
183–184 |
| 38 |
明細2 |
55 |
2 |
DTDD2 |
(名称なし) |
PIC'99' |
|
管理台帳 |
日(KAHNKMDD)※契約更新年月日 |
793 |
転記 |
182 |
| 39 |
明細2 |
57 |
16 |
DT203 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
85 |
| 40 |
明細2 |
73 |
14 |
DTNAM |
(名称なし) |
CHAR |
NI-NAME |
管理台帳 |
顧客略名 (カナ)(KATNRCNM) |
557 |
転記 |
185 |
| 41 |
明細2 |
87 |
79 |
DT204 |
(名称なし) |
CHAR |
|
定数 |
- |
|
空白 |
87 |
A.2 入力レイアウト(POSメート・FAXサービス SSPOSFAX)
LV=レベル番号。属性・桁・Byte は参考資料(現行解析資料)の定義による。
| # |
位置 |
日本語名称 |
LV |
変数名 |
属性 |
桁 |
Byte |
繰返し |
本プログラムでの使用 |
| 1 |
1 |
荷主コード |
2 |
POSQVKEY |
数字 |
7 |
7 |
|
管理台帳の読込キー、明細1行目 NI-CODE |
| 2 |
8 |
区分 |
2 |
POSFAXKB |
数字 |
1 |
1 |
|
明細1行目 KB(1:POSメート 2:FAXサービス 3:サポートII) |
| 3 |
9 |
未収扱い店所 |
2 |
POSQTNCD |
数字 |
4 |
4 |
|
明細1行目 T-CD |
| 4 |
13 |
請求精算区分 |
2 |
POSQSQKB |
数字 |
1 |
1 |
|
- |
| 5 |
14 |
履歴テーブル |
2 |
POSQGROP |
|
|
22 |
3 |
(集団項目) |
| 6 |
14 |
有償台数 |
3 |
POSQDARI |
数値 |
5 |
3 |
|
- |
| 7 |
17 |
無償台数 |
3 |
POSQNASI |
数値 |
5 |
3 |
|
- |
| 8 |
20 |
請求額 |
3 |
POSQSEQU |
数値 |
7 |
4 |
|
- |
| 9 |
24 |
その他料金 |
3 |
POSQEXRY |
数値 |
7 |
4 |
|
- |
| 10 |
28 |
開始年月日 |
3 |
POSQSTRT |
数字 |
6 |
6 |
|
- |
| 11 |
34 |
請求締日 |
3 |
POSQSQDD |
数字 |
2 |
2 |
|
1件目(34)のみ:締日照合、明細1行目 締日(2件目 56、3件目 78 は未使用) |
| 12 |
80 |
請求精算NO |
2 |
POSQSQNO |
数字 |
12 |
12 |
|
- |
| 13 |
92 |
SPACE |
2 |
POSQSPAC |
文字 |
4 |
4 |
|
- |
| 14 |
96 |
入力更新年月日 |
2 |
POSQIYMD |
数字 |
6 |
6 |
|
明細1行目 更新日 |
| 15 |
102 |
前回請求処理年月日 |
2 |
POSQBYMD |
数字 |
6 |
6 |
|
- |
| 16 |
108 |
SPACE |
2 |
POSQSPA0 |
文字 |
13 |
13 |
|
- |
管理台帳(KANBASED)で参照する項目は 7.1 を参照(それ以外の項目は参照しない)。