-1
プログラムに問題があります。私はVSAM KSDSファイルを読み込む方法を見つけましたが、通常のシーケンシャルファイルとマッチしてマージする必要があります。誰も助けることができますか?Cobol Vsam KSDSの一致とマージ
スペックは以下のとおりです。
- 以下のコピーを使用VSAMファイルの場合は、ソース・ライブラリー
- でのCOBOLベースのプログラムを作成します - COBOLプログラムの適切な場所にVSAMFD、VSAMRC、VSAMSELを。
- (CLOSE、SELECT、FD、OPEN、READ)入力を定義
- 入力の全てスルー読み取るために必要な手続き部の文を書く
- (CLOSE、WRITE、OPEN、SELECT、FD)のOUTPUTを定義しますファイル。各レコードについて、出力レコードを作成し、そのレコードを出力印刷ファイルに書き込みます。
- VSAMファイルの読み取りキーを使用して、卒業年のレコードを取得します。 VSAMファイル入力から出力された年を入力します。
- VSAMレコードが見つからない場合(VSAMRC not = '00'- O/Pレコードの目盛りの年に' ???? 'を移動してください)
- 見つかったら、出力レコードを入力し、 。適切なO/P記録
コボルプログラム:?
IDENTIFICATION DIVISION.
PROGRAM-ID. SU43PGM5.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VSAM-KSDS-FILE ASSIGN IFILE2
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS VSAM-KSDS-RECORD-KEY
FILE STATUS IS VSAM-STATUS-CODE
VSAM-EXTENDED-STATUS-CODE.
SELECT IN-FILE ASSIGN TO IFILE.
SELECT IN-FILE-2 ASSIGN TO IFILE2.
SELECT OUT-FILE ASSIGN TO OFILE.
***** NEED TO HAVE SELECTS FOR REGULAR FILES AS WELL
***** PURPOSE OF THIS PROGRAM - COMBINE THE REGULAR FILES WITH VSAM
DATA DIVISION.
FILE SECTION.
FD IN-FILE
RECORDING MODE IS F
RECORD CONTAINS 500 CHARACTERS
01 IN-REC.
05 IN-NAME PIC X(20).
05 IN-ADDRESS PIC X(20).
05 IN-SSN PIC 9(9).
05 IN-YR-GRAD PIC X(2).
05 FILLER PIC X(25).
FD IN-FILE-2.
01 IN-REC-2.
05 IN-SSN-2 PIC 9(9).
05 IN-CREDITS-2 PIC XX.
FD OUT-FILE.
01 OUT-REC.
05 OUT-NAME PIC X(20).
05 OUT-ADDRESS PIC X(20).
05 OUT-SSN PIC 9(9).
05 OUT-YR-GRAD PIC X(2).
05 FILLER PIC X(25).
FD VSAM-KSDS-FILE.
01 VSAM-KSDS-RECORD.
05 VSAM-KSDS-RECORD-KEY PIC X(20).
05 VSAM-KSDS-EMP-INFO PIC X(60).
WORKING-STORAGE SECTION.
01 WS-WORK-AREA.
05 IN-CTR PIC 9(5) COMP-3 VALUE 0.
05 OUT-CTR PIC 9(5) COMP-3 VALUE 0.
05 EOF-SW PIC X VALUE SPACES.
05 EOF-SW-2 PIC X VALUE SPACES.
05 MATCH-SWITCH PIC X VALUE SPACES.
01 VSAM-STATUS-CODE.
05 VSAM-STATUS-CODE-BYTE1 PIC X.
05 VSAM-STATUS-CODE-BYTE2 PIC X.
01 VSAM-EXTENDED-STATUS-CODE.
05 VSAM-EXTENDED-RETURN-CODE PIC S9(4) COMP.
05 VSAM-EXTENDED-FUNCTION-CODE PIC S9(4) COMP.
05 VSAM-EXTENDED-FEEDBACK-CODE PIC S9(4) COMP.
01 SWITCHES.
05 FILE-AT-END PIC X VALUE 'N'.
PROCEDURE DIVISION.
PERFORM INITIALIZATION
PERFORM PROCESS-ALL
UNTIL FILE-AT-END = 'Y'
PERFORM TERMINATION
GOBACK.
OPEN-FILES-RTN.
OPEN INPUT IN-FILE.
OPEN OUTPUT OUT-FILE.
READ IN-FILE
AT END MOVE 'F' TO EOF-SW.
OPEN-FILES-RTN-EXIT. EXIT.
INITIALIZATION.
OPEN INPUT VSAM-KSDS-FILE
IF VSAM-STATUS-CODE IS NOT EQUAL TO '00'
THEN GO TO ERROR-EXIT
END-IF
PERFORM READ-PAR.
PROCESS-ALL.
* THIS PROGRAM IS SIMPLE.
* IT JUST DISPLAYS THE RECORDS OF THE VSAM FILE
* OTHER PROGRAMS WOULD DO MORE INVOLVED PROCESSING
DISPLAY VSAM-KSDS-RECORD
PERFORM READ-PAR.
TERMINATION.
CLOSE VSAM-KSDS-FILE.
READ-PAR.
READ VSAM-KSDS-FILE
AT END MOVE 'Y' TO FILE-AT-END
NOT AT END
IF VSAM-STATUS-CODE IS NOT EQUAL TO '00'
THEN GO TO ERROR-EXIT
END-IF
END-READ.
ERROR-EXIT.
ファイルからすべてのレコードを読み込んで出力ファイルに書き込むプログラムが既にインストールされていると考えられます。あなたのプログラムをベースにしてください。 VSAMファイルでキー付き読み取りを実行するコードを追加し、2番目の出力ファイルにレコードを作成します。ここでの例題の質問を見てください。それ以降に問題がある場合は、この質問を更新するか、新しい質問を書き込んでください。現時点では、あなたのプログラムはあなたが示した仕様との関係はほとんどありません。 –