プロジェクト

全般

プロフィール

レビュー指摘 #11952 » KS60630_CSV出力イメージ.md

[参考資料]現行ソース解析資料(CSVイメージ)AI作成版 - 幸塚 和久, 2026-10-15 05:10 午後

 

KS60630 CSV 出力イメージ(請求書顧客データ)

項目 内容
ファイル名 SEAD.DAISEQ4J.CSV(DD 名 CSVFILE、DASD11)
作成プログラム KS60630P(DAISEQ4J のステップ KS60630P)
レコード形式 VB(BLKSIZE=12000、JCL に LRECL の指定なし)
レコード長 見出し行 56 バイト(HEDAREA)/明細行 34 バイト(CSVAREA)。RDW の 4 バイトは含まない
区切り カンマ(,)。引用符(")なし。最後の列の後にカンマなし。5 列
文字コード 現行は EBCDIC(日本語)。漢字は SO(X'0E')/SI(X'0F')付き
行の構成 1 行目に見出し行(必ず 1 行)、2 行目以降に明細行(入力の見出しデータ 1 件につき 1 行、入力の順)

1. 項目レイアウト

列 見出し 見出し行の位置 明細行の位置 明細の長さ 型・書式 編集元(src 行) 値の決め方
1 締め日 1~8(8) 1~6 6 数字 6 桁(YYMMDD)、ゼロ埋め SDTASYMD(L125) 入力の見出しデータの締め日(SQALLHED の SDTASYMD、PIC'(6)9')
- , 9 7 1 固定 L137
2 扱い店 10~17(8) 8~11 4 数字 4 桁、ゼロ埋め CORPATTN(L126) 顧客法人管理マスター(VKCORPO、キー=荷主コード)の扱い店。マスターに無いときは 0000
- , 18 12 1 固定 L137
3 請求先顧客コード 19~36(18) 13~19 7 数字 7 桁、ゼロ埋め BREAKA(L127) 請求先番号 13 桁の 2~8 桁目(荷主コード)。枝番 5 桁は出ない
- , 37 20 1 固定 L137
4 集約コード 38~49(12) 21~27 7 文字 7 桁、空白埋め(マスターの値のまま) CORPZAND(L128) 顧客法人管理マスターの集約代表コード。マスターに無いときは空白 7 桁
- , 50 28 1 固定 L137
5 取扱 51~56(6) 29~34 6 漢字 2 文字(SO+4 バイト+SI) L129~L136 下表
  • 見出し行は HEDAREA の初期値(L50~L54)をそのまま書く(L110)。見出しはすべて漢字で、各見出しの前後に SO/SI がある(( ) 内はバイト数)。
  • 明細行の各項目は固定長のため、値が短くても空白が詰められずに残る。

取扱の値(L129~L136)

優先印刷マスター(VKSYUPR、キー=荷主コード) UPRNASKB 取扱
無い(KEY 条件。キーエラーも同じ) - エコ
有る '6' 不要
有る '6' 以外 優先

2. 出力イメージ(架空データ)

2.1 例の入力条件

入力の請求先(荷主-枝番) 入力レコード(ID) 優先印刷マスター 顧客法人管理マスター(扱い店/集約コード) 出力
1000010-00001 00 ×1、01 ×2 無い 0101/9000001 明細行 1(エコ)
1000010-00002 00 ×1、01 ×1 (同じ荷主のため読み直さない) (同左) 明細行 2(行 1 と同じ内容)
2000020-00000 00 ×1、01 ×3 有る(UPRNASKB='1') 0202/9000002 明細行 3(優先)
3000030-00000 00 ×1、01 ×2 有る(UPRNASKB='6') 0303/3000030 明細行 4(不要)
4000040-00000 00 ×1、22 ×1 無い 無い 明細行 5(0000/空白/エコ)
  • 締め日(SDTASYMD)はすべて 261031(2026 年 10 月 31 日)。
  • 入力 14 件(見出しデータ ID 00 が 5 件、明細データ ID≠00 が 9 件)。ID≠00 のレコードは出力されない(L121)。
  • 出力は見出し行 1 行+明細行 5 行の計 6 行(SYSPRINT の OUTPUT COUNT は 5)。

2.2 PC に転送して文字コードを変換した後のイメージ

SO/SI を削除する転送設定の場合。

締め日,扱い店,請求先顧客コード,集約コード,取扱
261031,0101,1000010,9000001,エコ
261031,0101,1000010,9000001,エコ
261031,0202,2000020,9000002,優先
261031,0303,3000030,3000030,不要
261031,0000,4000040,       ,エコ

SO/SI を空白に変換する転送設定の場合(見出し行と取扱に空白が入る)。

 締め日 , 扱い店 , 請求先顧客コード , 集約コード , 取扱 
261031,0101,1000010,9000001, エコ 
261031,0101,1000010,9000001, エコ 
261031,0202,2000020,9000002, 優先 
261031,0303,3000030,3000030, 不要 
261031,0000,4000040,       , エコ 

2.3 ホスト上のイメージ(EBCDIC)

< = SO(X'0E')、> = SI(X'0F')、_ = 空白(X'40')。各 1 バイト。漢字は 1 文字 2 バイト(表示幅 2 桁)。

見出し行(56 バイト)

         1         2         3         4         5
----+----0----+----0----+----0----+----0----+----0----+-
<締め日>,<扱い店>,<請求先顧客コード>,<集約コード>,<取扱>

明細行(各 34 バイト)

         1         2         3
----+----0----+----0----+----0----
261031,0101,1000010,9000001,<エコ>
261031,0101,1000010,9000001,<エコ>
261031,0202,2000020,9000002,<優先>
261031,0303,3000030,3000030,<不要>
261031,0000,4000040,_______,<エコ>
  • カンマは X'6B'、数字は X'F0'~X'F9'。
  • VB のため、見出し行と明細行の長さは異なる(後ろに空白は付かない)。

2.4 入力 0 件のとき

見出し行だけの 1 行になる(見出し行は入力の有無に関係なく書く。L110)。

PC 変換後:

締め日,扱い店,請求先顧客コード,集約コード,取扱

ホスト上:

         1         2         3         4         5
----+----0----+----0----+----0----+----0----+----0----+-
<締め日>,<扱い店>,<請求先顧客コード>,<集約コード>,<取扱>

3. 注記

  • 同じ内容の行が出る:枝番を出力しないため、同じ荷主の枝番違いの請求先は区別できない行になる(例の明細行 1・2)。締め日も同じなら完全に同じ行。
  • マスターに無いとき:顧客法人管理マスターに無い荷主は、扱い店 0000、集約コード空白 7 桁になる(読込み域をクリアした値のまま。CO_SW は判定に使っていない)。空白は引用符なしでそのまま出る。
  • 優先印刷マスターのキーエラー:該当なし以外のキーエラーでも取扱は「エコ」になる。
  • 「不要」も出る:UPRNASKB='6'(明細不要)の顧客も、取扱=不要として CSV に出る。
  • 締め日は YYMMDD:西暦下 2 桁。年の解釈は利用側で必要。
  • SO/SI:見出しと取扱の漢字は SO/SI 付き。PC への転送設定によって、削除されるか空白になる(2.2)。
  • 行の順番:入力(TEMP.DAISEQ4J.WORK062S)の順のまま。並べ替えはしない。
  • 入力 0 件のとき:見出し行を書く前に、入力域の請求先番号(パック 10 進)を変換する(L109)。内容によってはデータ例外で異常終了し、見出し行も出ない可能性がある。
(1-1/3)