テーブルを検索しようとしていますが、異常終了し続けます。私は COBOL に非常に慣れていないので、単純な間違いを犯しているかどうかわかりません。デバッグしようとすると、教区コードが一致しているように見えるので、テリトリー コードが出力されない理由がわかりません。役に立つ場合に備えて、このルーチンの手順と私のコードを以下に示します。私は(カウントのように)たくさん欠けていることを知っていますが、最初に出力を取得しようとしています。どんな助けでも大歓迎です!
各レコードを読み取ります。レコード タイプが 94 の場合は、SEARCH 動詞を使用して、教区/領地テーブルで教区コードを検索し、領地コードを検索します。出力レコードに地域コードを追加し、レコードをディスクに書き込みます。
教区が教区/テリトリー テーブルで見つかった場合は、テリトリー テーブルでそのテリトリーのカウントを増やします。
教区が教区/地域テーブルにない場合は、プログラムを異常終了させます。
各テリトリーと、そのテリトリー内の対応するポリシーの数をレポートに出力します。
処理されたレコードの総数と処理されたポリシーの総数をレポートに出力します。
ファイルセクション。 FDレポートファイル ラベルレコードは省略されています データレコードはレポートレコードです。 01 REPORT-RECORD PIC X(132)。 FD 印刷ファイル ラベルレコードは省略されています データレコードは印刷レコードです。 01 PRINT-RECORD PIC X(132)。 FD INPUT-FILE ラベルレコードは標準です。 TRNREC94 をコピーします。 イジェクト ワーキングストレージセクション。 01 record-ws. 05 rec-record-type pic x(2) read 入力ファイル 05 rec-policy-number pic x(8) 05 フィラー pic x(5) 05 rec-parish-code pic x(3) 05 フィラー pic x(1) 05 rec-territory-code pic x(1) 05 フィラー pic x(60) 01 ヘッダー。 05 FILLER PIC X(8) 値「TSTHC020」。 05 FILLER PIC X(30) 値スペース。 05 フィラーピック X(41) 値「LOUISIANA FARM BUREAU INSURANCE COMPANIES」。 05 FILLER PIC X(30) 値スペース。 05 FILLER PIC X(5) 値「ページ」。 05 PRINT-PAGE-NUMBER PIC ZZZZZZ9. 01 HEADER-LINE-2。 05 FILLER PIC X(10) 値「2013 年 10 月 22 日」。 01 DETAIL-LINE。 05 DET-TERRITORY PIC X(2)。 05 DET-NUMBER-POLICIES PIC X(2)。 01 COLUMN-LINE。 05 FILLER PIC X(9) 値「地域」。 05 FILLER PIC X(10) 値スペース。 05 フィラーピック X(18) 値「ポリシーの数」。 01 TOTAL-LINE. 05 フィラーピック X(26) 値「処理された総レコード数」。 05 TOTAL-RECORDS PIC X(3)。 05 ファイラーピック X(32) 値 'AND TOTAL POLICIES PROCESSED IS'. 05 TOTAL-POLICIES PIC X(3)。 01 PROG-ID。 05 フィラーピック X(50) VALUE 'PROGRAM - TSTXX002- WORKING STORAGE STARTS HERE'. 01 MISC-VARIABLES-SW. 05 END-OF-FILE-SW PIC XXX. 88 ALL-RECORDS-ARE-PROCESSED 値「YES」。 88 MORE-RECORDS 値「いいえ」。 01 ファイル状態値。 05 ファイルステータス PIC 99. 88 読み取り成功 値 0。 88 正常開始値 0。 88 成功書き込み値 0。 88 成功削除値 0。 88 正常に開いた値 0。 88 成功 - クローズ 値 0。 88 END-OF-FILE 値 10。 88 レコードが見つからない値 23。 05 ページコントローラー。 10 A-LINE-COUNT PIC 999 COMP-3 値 0。 10 A-PAGE-COUNT PIC 999 COMP-3 値 0。 10 A-DISK-COUNTER PIC 9(5) COMP-3 値 0。 01 テーブル。 05 T1-TERRITORY-VALUES. 10 FILLER PIC X(4) 値「0101」。 10 FILLER PIC X(4) 値「0207」。 10 FILLER PIC X(4) 値「0307」。 10 FILLER PIC X(4) 値「0409」。 10 FILLER PIC X(4) 値「0509」。 10 FILLER PIC X(4) 値「0609」。 10 FILLER PIC X(4) 値「0709」。 10 FILLER PIC X(4) 値「0801」。 10 FILLER PIC X(4) 値「0901」。 10 FILLER PIC X(4) 値「1001」。 10 FILLER PIC X(4) 値「1104」。 10 FILLER PIC X(4) 値「1204」。 10 FILLER PIC X(4) 値「1305」。 10 FILLER PIC X(4) 値「1405」。 10 FILLER PIC X(4) 値「1506」。 10 FILLER PIC X(4) 値「1606」。 10 FILLER PIC X(4) 値「1707」。 10 FILLER PIC X(4) 値「1802」。 10 FILLER PIC X(4) 値「1902」。 10 FILLER PIC X(4) 値「2002」。 10 FILLER PIC X(4) 値「2103」。 10 フィラー PIC X(4) 値「2208」。 10 FILLER PIC X(4) 値「2308」。 10 FILLER PIC X(4) 値「2409」。 10 FILLER PIC X(4) 値「2506」。 10 フィラー PIC X(4) 値「2605」。 10 FILLER PIC X(4) 値「2704」。 10 FILLER PIC X(4) 値「2804」。 10 フィラー PIC X(4) 値「2903」。 10 FILLER PIC X(4) 値「3003」。 05 T1-TERRITORY-TABLE は T1-TERRITORY-VALUES を再定義します。 10 T1-ENTRY OCCURS 30 回 T1-INDEX によるインデックス。 15 T1-PARISH PIC XXX. 15 T1-TERRITORY PIC X. 05 T2-TERRITORY-COUNT. 10 FILLER PIC X(4) 値「1」。 10 FILLER PIC X(4) 値「2」。 10 FILLER PIC X(4) 値「3」。 10 FILLER PIC X(4) 値「4」。 10 FILLER PIC X(4) 値「5」。 10 FILLER PIC X(4) 値「6」。 10 FILLER PIC X(4) 値「7」。 10 FILLER PIC X(4) 値「8」。 10 FILLER PIC X(4) 値「9」。 05 T2-TERRITORY-TABLE は T2-TERRITORY-COUNT を再定義します。 10 T2-Entry が 9 回発生 T2-INDEX によるインデックス。 15 T2-TERRITORY-CODE PIC X. 15 T2-TERRITORY-COUNTER PIC XXX. 手続き部。 A000-メインライン。 B000-OPENING-PROCEDURE を実行します。 B110-PRINT-HEADINGS を実行します。 B300-READ-FILE を実行します。 B500-MAIN-PROCEDURE の実行 UNTIL END-OF-FILE-SW = 'YES'. B100-CLOSING-PROCEDURE を実行します。 ストップラン。 B000-OPENING-PROCEDURE。 出力レポートファイルを開きます。 出力印刷ファイルを開きます。 IO 入力ファイルを開きます。 B100-CLOSING-PROCEDURE. B800-PRINT-TOTAL-LINE を実行します。 レポートファイルを閉じます。 印刷ファイルを閉じます。 入力ファイルを閉じます。 B200-PRINT-HEADER。 ヘッダーを PRINT-RECORD に移動します。 PRINT-RECORD を書き込みます。 HEADER-LINE-2 を PRINT-RECORD に移動します。 進む前に PRINT-RECORD を書き込む 1. B300-READ-FILE。 入力ファイルの次のレコードを読み取る AT END MOVE 'YES' TO END-OF-FILE-SW. B500-MAIN-PROCEDURE。 B600-SEARCH-TERRITORY を実行 B300-READ-FILE を実行します。 B600-SEARCH-TERRITORY。 T1-INDEX を 1 に設定します。 T1エントリを検索 最後に 「パリッシュがテーブルに見つかりませんでした」と表示 CALL 'CEE3ABD' USING BY VALUE 12 BY VALUE 1 いつ REC-94-PARISH-CODE = T1-PARISH(T1-INDEX) T1-TERRITORY(T1-INDEX) を移動 DET-テリトリー。 B700-PRINT-DETAIL-LINE. DETAIL-LINE を PRINT-RECORD に移動します。 進む前に PRINT-RECORD を書き込む 1. B800-PRINT-TOTAL-LINE. A-LINE-COUNT を TOTAL-RECORDS に移動します。 TOTAL-LINE を PRINT-RECORD に移動します。 アドバンシング後に印刷レコードを書き込む 1. B900-PRINT-COLUMN-LINE. COLUMN-LINE を PRINT-RECORD に移動します。 進む前に PRINT-RECORD を書き込む 1. B110-PRINT-HEADINGS。 A-PAGE-COUNT に 1 を追加します。 A-PAGE-COUNT を PRINT-PAGE-NUMBER に移動します。 B200-PRINT-HEADER を実行します。 B900-PRINT-COLUMN-LINE を実行します。