プロジェクト

全般

プロフィール

レビュー指摘 #12108 » KS60350P_仕様書.md

幸塚 和久, 2026-10-26 04:20 午後

 

バッチ設計書(プログラム仕様書)【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 処理概要

  1. POSメート・FAXサービス(INFILE)を先頭から1件ずつ順次読み込む。
  2. 荷主コードをキーに、管理台帳(VKKANMS)をキー読込する。管理台帳に該当がない荷主は何もせず次のレコードへ進む(リストには出力しない)。
  3. 管理台帳の締日情報(6件)のうち、正式仮区分=1(本締)の締日と、POSメート側の請求締日(履歴テーブル1件目)を比較する。
  4. 一致する締日が1件もない場合、POSメート側と管理台帳側の内容を2行1組でアンマッチリストに印字する。18件ごとに改ページして見出しを印字する。
  5. 終了時に入力件数・出力件数を表示する。

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 を参照(それ以外の項目は参照しない)。

(2-2/2)