プロジェクト

全般

プロフィール

レビュー指摘 #12065 » KE53070_詳細設計書.md

[参考資料]現行ソース解析資料 - 幸塚 和久, 2026-10-23 09:51 午前

 

KE53070 詳細設計書

項目 内容
プログラムID KE53070(ソース名 KE53070P)
プログラム名 エントリー → 仕訳伝票マスター用フォーム変換
言語 PL/I(OPTIONS(MAIN))。パターン PPB0010P(ファイルのIO・SINGLE、87/04/03)
業務ID MMFSCV00(ソースの +DC GYOM)
起動JOB SOPOENTJ(エントリー 収入速報反映)の KE53070P ステップ(JCL L53)
作成日 2026/10/22
作成方法 ソースコードからのリバース作成

前提

  • INCLUDE の KESHWMST(仕訳伝票マスター用フォーム)を展開して解析した(付録B)。
  • 支給されたソースは UTF-8(EBCDIC から変換済み。SO/SI は「␎␏」で表示)で、文字コードの変換は不要だった。
  • JCL SOPOENTJ と、ジョブの対応方針(移行の要否)を加味した(2.3、2.4)。根拠となる JCL の行番号は「JCL L○○」と書く。
  • 外部手続き LSS0170 はソースが無いため、ブラックボックス(BB)として扱う。JCL の DD 名から、店所コードマスター(VETENCD)を参照するものと推定する。
  • 入力・出力の値の例(7章)はすべて架空である。
  • ★印は、ソースから読み取れる潜在的な問題点または注意点を示す。

1. 概要

1.1 機能

ソース先頭のコメント:「エントリー→仕訳伝票マスター用フォームへ変換」

  1. 仕訳のエントリーデータ(INFILE)を先頭から読む。
  2. 1件ごとに、仕訳伝票マスター用のフォーム(KESHWMST)に項目を移して OUTFILE に書く。入力と出力は1対1で、読み飛ばすデータは無い。
  3. 書く前に、次の2つのチェックを行い、該当すれば SYSPRINT にメッセージを出す。メッセージを出してもデータは出力する(ソースのコメント「※データは作成する」)。
    • ロジ部門のチェック:貸方の相手店が「Sロジ」(LSS0170 の判定が 'S')で、借方の部門が '1' の場合。
    • 不動産賃貸のチェック(26.08 追加):借方または貸方の科目が 9160056(不動産賃貸収入)で、その相手店が現行の不動産賃貸の店所コード(7店所)以外の場合。

ソースのコメントにある運用:メッセージが出たら経理部に確認し、問題があればデータを受け取って再処理する。問題が無ければそのままにする。

1.2 処理概要図

 GATEXTR(ADRI 抽出、PACKSWDT)
   │ TEMP.SOPOENTJ.WORK0010(DASD80)
   ▼
 INFILE ──────────▶ KE53070P ──────────▶ OUTFILE = SEAD.SOPOENTJ.WORK0010(DASD11)
 (仕訳エントリー、        │                (仕訳伝票マスター用フォーム、        │
   150バイト)             │                  KESHWMST 160バイト)               ├──▶ DAIBATEJ で使用
                           │                                                   └──▶ SORT(COPY)→ SEAD.SOPOENTJ.DATABACK(バックアップ)
                           ├──▶ LSS0170(相手店のロジ区分の判定。BB)── VETENCD(SEAD.TENSCODE.CDMASTER)
                           ▼
                        SYSPRINT(チェックのメッセージ)

2. 外部インターフェース

2.1 ファイル一覧

DD名 編成/属性(DCL) 入出力 内容 読込/書出領域
INFILE RECORD INPUT(順次) 入力 仕訳のエントリーデータ INAREA(150バイト。付録A)
OUTFILE RECORD OUTPUT(順次) 出力 仕訳伝票マスター用フォーム OUTAREA(KESHWMST 160バイト。付録B)
SYSPRINT - 出力 DISPLAY のメッセージ -
VETENCD (DCL なし。LSS0170 が使う) 入力 店所コードマスター(推定) -
  • 出力は JCL の DCB(RECFM=FB、LRECL=160)で、OUTAREA(160バイト)と一致する(JCL L61〜L63)。
  • ★ 入力は GATEXTR の出力をそのまま読み、JCL に DCB の指定が無い(JCL L55〜L58)。INAREA の 150バイトと、GATEXTR が作るレコード長が合っているかは要確認。

2.2 外部手続き

名称 引数 内容
LSS0170(BB) PARMX CHAR(4):店所コード(貸方相手店 INKSTEN)
PARMY CHAR(1):判定結果(戻り)
PARMZ CHAR(4):用途不明(初期値空白のまま渡す)
店所コードマスター(DD VETENCD=SEAD.TENSCODE.CDMASTER)で店所の区分を調べて返す(推定)。'S' を「Sロジ」の店所として扱う
  • ★ PARMY・PARMZ は毎回クリアしないので、LSS0170 が値を設定しない場合は前の値が残る(BB の仕様次第)。

2.3 JCL との対応(SOPOENTJ)

行 ステップ 内容 本PGとの関係
L1〜L4 JOB 文 MSGCLASS=H、COND=(9,LT)、REGION=6144K、CLASS=B。JOBLIB ENT.BATCHA.LOD -
L8〜L13 SCRATCH(IEHPROGM) TEMP.SOPOENTJ.WORK0010(DASD80)を削除 本PG の入力の事前削除
L15〜L21 SCRATCH(IEHPROGM) SEAD.SOPOENTJ.WORK0010・SEAD.SOPOENTJ.DATABACK(DASD11)を削除 本PG の出力とバックアップの事前削除
L22〜L51 ADRIEXTR(GATEXTR) EXTRACT DATACODE=PACKSWDT で抽出し、TEMP.SOPOENTJ.WORK0010 を作る(DISP=(,CATLG,DELETE)、200CYL) 本PG の入力を作る
L53〜L67 KE53070P 本PG。INFILE=TEMP.SOPOENTJ.WORK0010(SHR)、VETENCD=SEAD.TENSCODE.CDMASTER(SHR)、OUTFILE=SEAD.SOPOENTJ.WORK0010((,KEEP,DELETE)、FB、LRECL=160、BLKSIZE=6240) -
L69〜L84 SORT(USORTM) SORT FIELDS=COPY で SEAD.SOPOENTJ.WORK0010 を SEAD.SOPOENTJ.DATABACK に写す 本PG の出力のバックアップ
  • 出力の SEAD.SOPOENTJ.WORK0010 は、ジョブの最後でも削除されず、別ジョブ DAIBATEJ が使う。
  • ジョブの COND=(9,LT) により、リターンコードが9を超えたステップの後は実行しない。本PG はリターンコードを設定しないので、チェックに該当しても後続の SORT は動く。

2.4 移行の対応方針

ジョブの対応方針(支給資料)は次のとおり。

JCL 行 ステップ 方針 特記事項
L8 SCRATCH 移行不要 TEMP.SOPOENTJ.WORK0010
L15 SCRATCH (記載なし) SEAD.SOPOENTJ.WORK0010、SEAD.SOPOENTJ.DATABACK
L31 GATEXTR (記載なし) CSV データの取り込み(#11523)
L53 KE53070P (記載なし) SEAD.SOPOENTJ.WORK0010 は DAIBATEJ で使用(#11523)
L69 SORT 移行不要 SEAD.SOPOENTJ.WORK0010(KE53070P の OUTFILE)→ SEAD.SOPOENTJ.DATABACK
  • 移行後の本PG の入力は、GATEXTR の置き換え(CSV データの取り込み、#11523)が作るデータになる。入力の形式(CSV か固定長か)が変わる場合は、INAREA の項目の切り出し方を合わせて決める必要がある。
  • 出力(SEAD.SOPOENTJ.WORK0010)は DAIBATEJ が使うので、移行後も KESHWMST の形(160バイト)と項目の意味を保つ必要がある。
  • バックアップの SORT(COPY)は移行不要のため、移行後は DATABACK を作らない。
  • L15 の SCRATCH(出力の事前削除)の方針は資料に記載が無い。出力を毎回作り直す前提なので、移行後の出力先での事前削除(または上書き)の扱いを決める必要がある。

3. データ定義

3.1 入力エリア(INAREA、150バイト)

  • 付録A のとおり。伝票番号(INEDPNH 3桁+INEDPNO 6桁)、発行年月日(INHAK20・INHAKYY・INHAKMM・INHAKDD)、伝票区分 INDENKB、発行店、借方(科目・摘要・銀行・相手店・業種・部門)、貸方(同)、金額 INKINGK(11桁)からなる。
  • 業種・部門・銀行は CHAR で定義し、数字として使うための重ね定義(INKRGYS_P など、PIC'9')を持つ。

3.2 出力エリア(OUTAREA=KESHWMST、160バイト)

  • 付録B のとおり。伝票番号 KIEDPNO、発行店 KIHAKTC、発行年月日 KIHAKDT、借方 KIKARIN(7項目)、貸方 KIKASIK(7項目)、合計金額 KIGOKKN(FIXED DEC(11))ほか。
  • 入力日時(KIINPNA)、入力区分、モニターID、廃棄区分などは、このプログラムでは設定しない(クリア値のまま)。

3.3 ワークエリア

名称 属性 初期値 内容
EOF_SW BIT(1) '1'B INFILE の終了で '0'B
NUMR CHAR(10) '0123456789' 数字チェック(VERIFY)用
PARMX/PARMY/PARMZ CHAR(4)/CHAR(1)/CHAR(4) 空白 LSS0170 の引数
CAD_SW、SP_SW、KM_SW、OUT_SW、GOKE_FIX、II、LEN、SO_SW、SOSI(SO_W・SI_W)、NENDO、CDAREA(付録C) - - 宣言のみ(未使用。パターンや他プログラムからの流用と推定)

4. 処理フロー

開始
 ├─ ON ENDFILE(INFILE) → EOF_SW='0'B
 ├─ OPEN INFILE、OUTFILE
 ├─ INFILE を1件読む
 ├─ DO WHILE(INFILE が終わるまで)
 │     OUTAREA をクリア
 │     伝票番号・発行年月日・発行店を編集                       … 5.2
 │     借方・貸方・金額を編集                                   … 5.3
 │     ロジ部門のチェック(LSS0170)→ 該当なら ERR_RTN          … 5.4
 │     不動産賃貸のチェック(借方・貸方)→ 該当なら ERR_RTN_1/2  … 5.5
 │     OUTFILE に WRITE
 │     INFILE を1件読む
 │  END
 ├─ CLOSE INFILE、OUTFILE
終了

5. 処理詳細

5.1 開始処理

  1. ENDFILE 条件で EOF_SW を '0'B にする。
  2. INFILE と OUTFILE を OPEN し、INFILE を1件読む。
    • INFILE が0件のときは、ループに入らず、空の OUTFILE ができる(メッセージなし)。

5.2 見出し項目の編集

出力項目 編集内容 ソース
OUTAREA 全体 '' でクリア(数字項目は0、文字項目は空白) L118
KIEDPNO(伝票番号6桁) ← INEDPNO(下6桁。上3桁の INEDPNH は出力しない) L119
KIHAKYY(年) ← INHAKYY(西暦下2桁。上2桁の INHAK20 は出力しない) L120
KIHAKMM(月) ← INHAKMM L121
KIHAKDD(日) 伝票区分 INDENKB=10 なら ← INHAKDD、それ以外は 99 L122〜L124
KIHAKTC(発行店) ← INHKTEN L125
  • ★ 伝票区分が10以外の伝票は、日が 99 になる(月単位の伝票として扱う意図と推定)。

5.3 借方・貸方・金額の編集

出力項目 借方 貸方 編集内容
科目 KIAKAMC ← INKRKAM KIBKAMC ← INKSKAM そのまま
摘要 KIATEKI ← INKRTEK KIBTEKI ← INKSTEK そのまま
銀行 KIABANK KIBBANK 入力(CHAR(7))が数字だけなら数字7桁として設定、それ以外は 0
相手店 KIAAITE ← INKRTEN KIBAITE ← INKSTEN そのまま
業種 KIAGYOS KIBGYOS 入力(CHAR(1))が数字なら設定、それ以外は 1
部門 KIABUMO KIBBUMO 入力(CHAR(1))が数字なら設定、それ以外は 1
金額 KIGOKKN ← INKINGK - 11桁の数字をパック10進 FIXED DEC(11) に変換
  • 数字かどうかは VERIFY(項目, '0123456789') = 0 で判定する(L129〜L151)。空白も数字以外として扱う。
  • ★ 業種・部門が空白や数字以外のときは、黙って 1 にする(メッセージなし)。
  • 借方・貸方のセンター(KIASENT・KIBSENT)は設定しない(空白)。

5.4 ロジ部門のチェック

  1. PARMX ← INKSTEN(貸方相手店、4桁の数字を文字に変換)。
  2. CALL LSS0170(PARMX, PARMY, PARMZ)。
  3. PARMY='S'(Sロジ) かつ INKRBUM(借方部門)='1' なら、ERR_RTN を呼ぶ。

ERR_RTN のメッセージ:* NO-EDPNO-BUMON-TNCD-KIN = ∥ 伝票番号上3桁 ∥ '-' ∥ 下6桁 ∥ '-' ∥ 借方部門 ∥ '-' ∥ 貸方相手店 ∥ '-' ∥ 金額

  • ★ 店所は貸方の相手店、部門は借方の部門で判定している。ソースのコメントは「「Sロジ」かつ部門「1」」で、どちらの部門を見るべきかは要確認。
  • データは出力する(チェックはメッセージだけ)。

5.5 不動産賃貸のチェック(26.08 追加)

判定 条件 メッセージ
借方 INKRKAM=9160056 かつ INKRTEN が下表の7店所以外 ERR_RTN_1:* FUDOSAN-CHINTAI-CHECK = ∥ 借方科目 ∥ '-' ∥ 借方相手店
貸方 INKSKAM=9160056 かつ INKSTEN が下表の7店所以外 ERR_RTN_2:* FUDOSAN-CHINTAI-CHECK = ∥ 貸方科目 ∥ '-' ∥ 貸方相手店

現行の不動産賃貸の店所コード:1394、1159、5551、5559、5654、2253、0159

  • 借方・貸方の両方に該当すれば、メッセージは2行出る。データは出力する。
  • ★ 店所コードがソースに直接書かれている。店所が増減するとソースの修正が必要になる。

5.6 終了処理

  1. INFILE と OUTFILE を CLOSE する。
  • 件数の表示は無い。

6. SYSPRINT のメッセージイメージ

7章の例の場合:

* NO-EDPNO-BUMON-TNCD-KIN = 001-123456-1-0701-00000150000
* FUDOSAN-CHINTAI-CHECK = 9160056-1234
  • 項目は入力の値をそのまま(PIC の数字はゼロ埋め)つないで出す。

7. 入力と出力の例

7.1 入力(INFILE、主な項目だけ)

伝票番号(上3+下6) 発行年月日(20+YY MM DD) 伝票区分 発行店 借方(科目/相手店/業種/部門/銀行) 貸方(科目/相手店/業種/部門/銀行) 金額
001-123456 20 26 09 30 10 1001 1111111/1001/1/1/空白 2222222/0701/1/2/0123456 150000
001-123457 20 26 09 30 20 1001 9160056/1234/空白/空白/空白 3333333/1001/1/1/空白 80000
  • 1件目の貸方相手店 0701 は、LSS0170 の判定で 'S'(Sロジ)とする(例)。

7.2 出力(OUTFILE、主な項目だけ)

伝票番号 発行年月日 発行店 借方(科目/相手店/業種/部門/銀行) 貸方(科目/相手店/業種/部門/銀行) 金額
123456 26 09 30 1001 1111111/1001/1/1/0000000 2222222/0701/1/2/0123456 150000
123457 26 09 99 1001 9160056/1234/1/1/0000000 3333333/1001/1/1/0000000 80000
  • 1件目:Sロジ かつ借方部門 1 なので、ERR_RTN のメッセージが出る(データは出力する)。
  • 2件目:伝票区分が10以外なので日は 99。借方の業種・部門が空白なので 1。借方科目が不動産賃貸で、相手店 1234 は7店所以外なので、ERR_RTN_1 のメッセージが出る。

8. メッセージ一覧

No メッセージ 出力先 契機
1 * NO-EDPNO-BUMON-TNCD-KIN = ∥ 伝票番号 ∥ 借方部門 ∥ 貸方相手店 ∥ 金額 SYSPRINT(DISPLAY) 貸方相手店が Sロジ かつ借方部門='1'(5.4)
2 * FUDOSAN-CHINTAI-CHECK = ∥ 借方科目 ∥ 借方相手店 同上 借方科目が 9160056 で相手店が7店所以外(5.5)
3 * FUDOSAN-CHINTAI-CHECK = ∥ 貸方科目 ∥ 貸方相手店 同上 貸方科目が 9160056 で相手店が7店所以外(5.5)

9. 異常処理

事象 検出 処理
INFILE の終了 ENDFILE 条件 EOF_SW='0'B でループを終える(正常)
チェックに該当 5.4、5.5 の判定 メッセージを出し、データは出力して続行
銀行・業種・部門が数字以外 VERIFY 銀行は 0、業種・部門は 1 にして続行(メッセージなし)
数字項目(PIC)に数字以外が入っている CONVERSION 条件 ON 定義なし → 異常終了
その他 - ON ERROR の定義なし → PL/I 標準のエラー処理(異常終了)
リターンコード - 設定なし(正常時は 0。チェックに該当しても 0)
  • ★ チェックに該当してもリターンコードは0のため、ジョブの結果からは分からない。SYSPRINT を目で確認する運用が前提。

10. 留意事項(★)

  1. チェックはメッセージだけ:該当してもデータは出力し、リターンコードも0(ソースのコメントどおり。運用で経理部に確認する前提)。
  2. ロジ部門のチェックの対象:店所は貸方相手店、部門は借方部門で判定している(5.4)。
  3. 不動産賃貸の店所がソースに固定:7店所の増減のたびにソースの修正が必要(5.5)。
  4. 伝票区分が10以外は日が 99(5.2)。
  5. 数字以外の業種・部門は黙って 1、銀行は 0(5.3)。
  6. 伝票番号の上3桁と年の上2桁は出力しない(KIEDPNO 6桁、KIHAKYY 2桁)。
  7. LSS0170 は BB:店所コードマスター(VETENCD)を参照すると推定されるが、引数 PARMY・PARMZ の意味と、値を返さない場合の扱いが不明(2.2)。
  8. 件数の表示が無い:入力・出力の件数をジョブログで確認できない。
  9. 未使用の変数が多い(3.3):CDAREA、SOSI、GOKE_FIX など。
  10. 入力のレコード長:GATEXTR の出力をそのまま読み、JCL に DCB が無い。INAREA(150バイト)と合っているか要確認(2.1)。移行後は入力が CSV の取り込み(#11523)に変わるため、項目の切り出し方を合わせて決める(2.4)。
  11. 出力は DAIBATEJ が使う:移行後も KESHWMST の形と項目の意味を保つ必要がある(2.4)。
  12. 出力の事前削除の方針が未記載:JCL L15 の SCRATCH の移行方針が資料に無い(2.4)。

11. 未使用項目

項目 内容
INHAK20、INKRDEL、INKSDEL 入力の項目のうち参照しないもの(INEDPNH は DISPLAY だけで使う)
KISPAC1、KIDATKB、KIASENT、KIBSENT、KIINPNA(KIINPTC〜KIINPMI)、KIINPKB、KIMONID、KIINPYY、KISPAC2、KIHAIKB 出力の項目のうち設定しないもの(クリア値のまま)
CAD_SW、SP_SW、KM_SW、OUT_SW、GOKE_FIX、II、LEN、SO_SW、SOSI、SO_W、SI_W、NENDO、CDAREA 宣言のみ
SUBSTR、DATE、LOW、LENGTH、INDEX、STRING BUILTIN の宣言のみ(VERIFY だけ使う)

付録A INAREA(入力、150バイト)

LV 項目名 属性 位置 長さ 本PGでの使用
01 INAREA (集団項目) 1 150 READ INFILE INTO の入力域
02 INEDPNH PIC'(0003)9' 1 3 DISPLAY(ERR_RTN)に使用
02 INEDPNO PIC'(0006)9' 4 6 KIEDPNO ← INEDPNO。DISPLAY(ERR_RTN)にも使用
02 INHAK20 PIC'(0002)9' 10 2 未使用
02 INHAKYY PIC'(0002)9' 12 2 KIHAKYY ← INHAKYY
02 INHAKMM PIC'(0002)9' 14 2 KIHAKMM ← INHAKMM
02 INHAKDD PIC'(0002)9' 16 2 INDENKB=10 のとき KIHAKDD ← INHAKDD(それ以外は KIHAKDD=99)
02 INDENKB PIC'(0002)9' 18 2 KIHAKDD の編集判定(=10 か否か)に使用
02 INHKTEN PIC'(0004)9' 20 4 KIHAKTC ← INHKTEN(発行店)
02 INKRKAM PIC'(0007)9' 24 7 KIAKAMC ← INKRKAM(借方科目)。=9160056 の不動産賃貸チェック、DISPLAY(ERR_RTN_1)にも使用
02 INKRTEK PIC'(0004)9' 31 4 KIATEKI ← INKRTEK(借方摘要)
02 INKRBAN CHAR(0007) 35 7 VERIFY(INKRBAN,NUMR)=0(全桁数字)のとき KIABANK ← INKRBAN_P(DEF: PIC'(0007)9' で重ね定義)、それ以外は KIABANK=0
02 INKRTEN PIC'(0004)9' 42 4 KIAAITE ← INKRTEN(借方相手店)。不動産賃貸チェック(1394/1159/5551/5559/5654/2253/0159 以外はERR_RTN_1)、DISPLAY(ERR_RTN_1)にも使用
02 INKRGYS CHAR(0001) 46 1 VERIFY(INKRGYS,NUMR)=0 のとき KIAGYOS ← INKRGYS_P(DEF: PIC'(0001)9' で重ね定義)、それ以外は KIAGYOS=1
02 INKRBUM CHAR(0001) 47 1 VERIFY=0 のとき KIABUMO ← INKRBUM_P(DEF: PIC'(0001)9' で重ね定義)、それ以外は KIABUMO=1。PARMY='S' かつ INKRBUM='1' の判定(ERR_RTN)、DISPLAY(ERR_RTN)にも使用
02 INKRDEL CHAR(0020) 48 20 未使用
02 INKSKAM PIC'(0007)9' 68 7 KIBKAMC ← INKSKAM(貸方科目)。=9160056 の不動産賃貸チェック、DISPLAY(ERR_RTN_2)にも使用
02 INKSTEK PIC'(0004)9' 75 4 KIBTEKI ← INKSTEK(貸方摘要)
02 INKSBAN CHAR(0007) 79 7 VERIFY(INKSBAN,NUMR)=0 のとき KIBBANK ← INKSBAN_P(DEF: PIC'(0007)9' で重ね定義)、それ以外は KIBBANK=0
02 INKSTEN PIC'(0004)9' 86 4 KIBAITE ← INKSTEN(貸方相手店)。PARMX ← INKSTEN で LSS0170 呼出(ロジ判定)、不動産賃貸チェック(INKSKAM=9160056 時)、DISPLAY(ERR_RTN、ERR_RTN_2)にも使用
02 INKINGK PIC'(0011)9' 90 11 KIGOKKN ← INKINGK(金額)。DISPLAY(ERR_RTN)にも使用
02 INKSGYS CHAR(0001) 101 1 VERIFY(INKSGYS,NUMR)=0 のとき KIBGYOS ← INKSGYS_P(DEF: PIC'(0001)9' で重ね定義)、それ以外は KIBGYOS=1
02 INKSBUM CHAR(0001) 102 1 VERIFY(INKSBUM,NUMR)=0 のとき KIBBUMO ← INKSBUM_P(DEF: PIC'(0001)9' で重ね定義)、それ以外は KIBBUMO=1
02 INKSDEL CHAR(0048) 103 48 未使用

合計 150 バイト(3+6+2+2+2+2+2+4+7+4+7+4+1+1+20+7+4+7+4+11+1+1+48)。

付録B OUTAREA=KESHWMST の展開(出力、160バイト)

ソースの DCL 01 OUTAREA , %INCLUDE KESHWMST ;(L63〜L64)で取り込まれる仕訳伝票マスター用フォームを展開したもの。

FIXED DEC(11) は6バイト(パック)で計算。

LV 項目名 属性 位置 長さ 本PGでの使用
01 OUTAREA (集団項目) 1 160 WRITE OUTFILE FROM の出力域。各レコード処理の先頭で OUTAREA='' によりクリア
02 KIEDPNO PIC'(0006)9' 1 6 INEDPNO をセット
02 KISPAC1 CHAR(0001) 7 1 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIDATKB PIC'(0001)9' 8 1 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIHAKTC PIC'(0004)9' 9 4 INHKTEN をセット
02 KIHAKDT (集団項目) 13 6 個別項目(YY/MM/DD)に分けてセット
03 KIHAKYY PIC'(0002)9' 13 2 INHAKYY をセット
03 KIHAKMM PIC'(0002)9' 15 2 INHAKMM をセット
03 KIHAKDD PIC'(0002)9' 17 2 INDENKB=10 なら INHAKDD、それ以外は 99
02 KIKARIN (集団項目) 19 26 借方情報(個別項目にセット)
03 KIASENT CHAR(0002) 19 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIAKAMC PIC'(0007)9' 21 7 INKRKAM をセット
03 KIATEKI PIC'(0004)9' 28 4 INKRTEK をセット
03 KIAGYOS PIC'(0001)9' 32 1 INKRGYS が数字なら INKRGYS_P、数字でなければ 1
03 KIABUMO PIC'(0001)9' 33 1 INKRBUM が数字なら INKRBUM_P、数字でなければ 1
03 KIAAITE PIC'(0004)9' 34 4 INKRTEN をセット
03 KIABANK PIC'(0007)9' 38 7 INKRBAN が数字なら INKRBAN_P、数字でなければ 0
02 KIKASIK (集団項目) 45 26 貸方情報(個別項目にセット)
03 KIBSENT CHAR(0002) 45 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIBKAMC PIC'(0007)9' 47 7 INKSKAM をセット
03 KIBTEKI PIC'(0004)9' 54 4 INKSTEK をセット
03 KIBGYOS PIC'(0001)9' 58 1 INKSGYS が数字なら INKSGYS_P、数字でなければ 1
03 KIBBUMO PIC'(0001)9' 59 1 INKSBUM が数字なら INKSBUM_P、数字でなければ 1
03 KIBAITE PIC'(0004)9' 60 4 INKSTEN をセット
03 KIBBANK PIC'(0007)9' 64 7 INKSBAN が数字なら INKSBAN_P、数字でなければ 0
02 KIGOKKN FIXED DEC(0011) 71 6 INKINGK をセット(金額)
02 KIINPNA (集団項目) 77 12 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIINPTC PIC'(0004)9' 77 4 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIINPMM PIC'(0002)9' 81 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIINPDD PIC'(0002)9' 83 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIINPHH PIC'(0002)9' 85 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
03 KIINPMI PIC'(0002)9' 87 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIINPKB PIC'(0001)9' 89 1 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIMONID CHAR(0003) 90 3 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIINPYY CHAR(0002) 93 2 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KISPAC2 CHAR(0065) 95 65 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)
02 KIHAIKB PIC'(0001)9' 160 1 未設定(OUTAREA='' のクリア値:数字項目は0、文字項目は空白)

合計 160 バイト(6+1+1+4+6+26+26+6+12+1+3+2+65+1。KIGOKKN は FIXED DEC(11) のパック6バイト)。

付録C CDAREA(ワーク、80バイト)

LV 項目名 属性 位置 長さ 本PGでの使用
01 CDAREA (集団項目) 1 80 未使用(宣言のみ)
02 CDKMCA PIC'(0007)9' 1 7 未使用
02 CDDUM1 CHAR(0001) 8 1 未使用
02 CDTEKI PIC'(0004)9' 9 4 未使用
02 CDDUM2 CHAR(0001) 13 1 未使用
02 CDSYMD PIC'(0006)9' 14 6 未使用
02 CDDUM4 CHAR(0001) 20 1 未使用
02 CDEYMD PIC'(0006)9' 21 6 未使用
02 CDSPAC CHAR(0054) 27 54 未使用

合計 80 バイト(7+1+4+1+6+1+6+54)。

(2-2/2)