-1
遇到程序問題。我已經發現如何通過VSAM KSDS文件讀取,但我需要匹配並與正常的順序文件合併。誰能幫忙?Cobol Vsam KSDS匹配併合
的規格是:
- 在源庫
- 對於VSAM文件創建一個COBOL基本程序使用下面的副本 - VSAMFD,VSAMRC,VSAMSEL在COBOL程序的適當地方。
- 定義輸入(SELECT,FD,OPEN,READ,CLOSE)
- 定義輸出(SELECT,FD,OPEN,寫,關閉)
- 寫了必要的程序分流語句讀通所有輸入文件。對於每個記錄填充輸出記錄並將記錄寫入輸出打印文件。
- 使用VSAM文件的密鑰讀取以獲得畢業年份的記錄。從VSAM文件輸入填充畢業年份。
- 如果未找到VSAM記錄(VSAMRC不是'00'-移動'????'爲畢業年份爲O/P記錄。
- 找到後,填寫輸出記錄並寫入適當的O/P記錄
COBOL程序:
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文件執行鍵控讀取,並在第二個輸出文件上創建記錄。看看這裏的例子問題。如果之後遇到問題,請更新此問題或寫出新問題。目前,您的程序與您所展示的規格沒有什麼關係。 –