2016-04-24 12 views
-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. 
+0

ファイルからすべてのレコードを読み込んで出力ファイルに書き込むプログラムが既にインストールされていると考えられます。あなたのプログラムをベースにしてください。 VSAMファイルでキー付き読み取りを実行するコードを追加し、2番目の出力ファイルにレコードを作成します。ここでの例題の質問を見てください。それ以降に問題がある場合は、この質問を更新するか、新しい質問を書き込んでください。現時点では、あなたのプログラムはあなたが示した仕様との関係はほとんどありません。 –

答えて

0

なぜそれがCOBOLプログラムである必要はありん

それが何場合は、おそらく、DFSORT(またはSYNCSORTでこのすべてを達成できますきみのサイトが持っている)。 JOINKEYSはマッチングをやると思います。

これはクラスの割り当てであり(どちらの方法でも敬意を表しません)、COBOLとDFSORT/Syncsortの両方のソリューションを提示すると、余分なクレジットが得られる可能性があります。

私が示唆しているアプローチは、優れた性能を発揮し、より保守性の高い方法ではありません。

単なる考えです。

関連する問題