I have a KSAM file at my clients place. I need to write a record in to this file. I have written a smaal program to do from the example provided by doc.hp.com. But that does not help. I dont know what I am doing wrong.
I do not know the exact file structure of the existing UNIFLSZ. I am trying to manipulate from what I look I am very skeptical about this. Any help is appreciated.
Here is the code:
================
001000$CONTROL LIST, USLINIT
001100 IDENTIFICATION DIVISION.
001200 PROGRAM-ID. UNIFLSRC.
001300
001400******************************************************************
001500* 002800
002900******************************************************************
003000* *
003100* WRITE A RECORD IN UNIFLSZ *
003200* *
003300******************************************************************
003400
003500 ENVIRONMENT DIVISION.
003600 CONFIGURATION SECTION.
003700 SOURCE-COMPUTER. HP3000.
003800 OBJECT-COMPUTER. HP3000.
003900 SPECIAL-NAMES.
004000 CONDITION-CODE IS INTRINSIC-RESULT.
004100 INPUT-OUTPUT SECTION.
004200 FILE-CONTROL.
004300 SELECT DATA-FILE ASSIGN TO "UNIFLSZ".
004300 DATA DIVISION.
004400 FILE SECTION.
004500 FD DATA-FILE LABEL RECORDS ARE STANDARD.
004600 01 REC.
004700 03 FILLER PIC XX.
004800 03 PRG-NAME PIC X(5).
004900 03 FILLER PIC X(2).
005000 03 MEM-SIZE PIC X(5).
005100 WORKING-STORAGE SECTION.
005200 77 RECSIZE PIC S9(4) COMP VALUE 15.
005300 77 RESULT PIC 9(4) VALUE 0.
005400 01 DAT.
005500 03 WS-PRG-NAME PIC X(5).
005650 03 FILLER PIC X(2) VALUE SPACES.
005700 03 WS-MEM-SIZE PIC X(5).
005800
005900 01 FILETABLE.
006000 03 FILENUMBER PIC S9(4) COMP VALUE 0.
006100 03 FILENAME PIC X(8) VALUE "UNIFLSZ".
006200 03 I-O-TYPE PIC S9(4) COMP VALUE 0.
006300 03 A-MODE PIC S9(4) COMP VALUE 0.
006400 03 PREV-OP PIC S9(4) COMP VALUE 0.
006500 01 STAT.
006600 03 STATUS-KEY-1 PIC X.
006700
006800
006900 03 STATUS-KEY-2 PIC X.
007000 PROCEDURE DIVISION.
007100 010-START-PROG.
007200 MOVE 1 TO I-O-TYPE.
007300 CALL "CKOPEN" USING FILETABLE, STAT.
007400 IF STATUS-KEY-1="O" THEN GO TO WRITE-F.
007500 DISPLAY "CKOPEN ERROR, STATUS = ", STAT.
007600 IF STATUS-KEY-1= "9" THEN
007700 CALL "CKERROR" USING STAT, RESULT
007800 DISPLAY "CKERROR NO. ", RESULT.
007900 STOP RUN.
008000 WRITE-F.
008100
008200
008300
008400
008500
008600
008700
008800 READ DATA-FILE INTO DAT
008900 AT END GO TO FINISH.
MOVE "DC362" TO WS-PRG-NAME.
MOVE "75000" TO WS-MEM-SIZE.
009000 MOVE WS-PRG-NAME TO PRG-NAME.
MOVE WS-MEM-SIZE TO MEM-SIZE.
010000 CALL "CKWRITE" USING FILETABLE, STAT, REC, RECSIZE.
010100 IF STATUS-KEY-1="0" THEN
010200 DISPLAY REC.
010300 GO TO WRITE-F.
010400 IF STAT="21" THEN
010500 DISPLAY "SEQUENCE ERROR IN", PRG-NAME OF REC
010600 GO TO WRITE-F.
010700 IF STAT = "22" THEN
010800 DISPLAY "DUPLICATE KEY", PRG-NAME OF REC
010900 GO TO WRITE-F.
011000 IF STAT = "24" THEN
011100 DISPLAY "END OF FILE"
011200 GO TO FINISH.
011300 FINISH.
011400 CLOSE DATA-FILE.
011500 CALL "CKCLOSE" USING FILETABLE, STAT.
011600 IF STATUS-KEY-1="9" THEN
011700 CALL "CKERROR" USING STAT, RESULT
011800 DISPLAY "CKCLOSE ERROR NO. ", RESULT.
011900 STOP RUN.
I do not know the exact file structure of the existing UNIFLSZ. I am trying to manipulate from what I look I am very skeptical about this. Any help is appreciated.
Here is the code:
================
001000$CONTROL LIST, USLINIT
001100 IDENTIFICATION DIVISION.
001200 PROGRAM-ID. UNIFLSRC.
001300
001400******************************************************************
001500* 002800
002900******************************************************************
003000* *
003100* WRITE A RECORD IN UNIFLSZ *
003200* *
003300******************************************************************
003400
003500 ENVIRONMENT DIVISION.
003600 CONFIGURATION SECTION.
003700 SOURCE-COMPUTER. HP3000.
003800 OBJECT-COMPUTER. HP3000.
003900 SPECIAL-NAMES.
004000 CONDITION-CODE IS INTRINSIC-RESULT.
004100 INPUT-OUTPUT SECTION.
004200 FILE-CONTROL.
004300 SELECT DATA-FILE ASSIGN TO "UNIFLSZ".
004300 DATA DIVISION.
004400 FILE SECTION.
004500 FD DATA-FILE LABEL RECORDS ARE STANDARD.
004600 01 REC.
004700 03 FILLER PIC XX.
004800 03 PRG-NAME PIC X(5).
004900 03 FILLER PIC X(2).
005000 03 MEM-SIZE PIC X(5).
005100 WORKING-STORAGE SECTION.
005200 77 RECSIZE PIC S9(4) COMP VALUE 15.
005300 77 RESULT PIC 9(4) VALUE 0.
005400 01 DAT.
005500 03 WS-PRG-NAME PIC X(5).
005650 03 FILLER PIC X(2) VALUE SPACES.
005700 03 WS-MEM-SIZE PIC X(5).
005800
005900 01 FILETABLE.
006000 03 FILENUMBER PIC S9(4) COMP VALUE 0.
006100 03 FILENAME PIC X(8) VALUE "UNIFLSZ".
006200 03 I-O-TYPE PIC S9(4) COMP VALUE 0.
006300 03 A-MODE PIC S9(4) COMP VALUE 0.
006400 03 PREV-OP PIC S9(4) COMP VALUE 0.
006500 01 STAT.
006600 03 STATUS-KEY-1 PIC X.
006700
006800
006900 03 STATUS-KEY-2 PIC X.
007000 PROCEDURE DIVISION.
007100 010-START-PROG.
007200 MOVE 1 TO I-O-TYPE.
007300 CALL "CKOPEN" USING FILETABLE, STAT.
007400 IF STATUS-KEY-1="O" THEN GO TO WRITE-F.
007500 DISPLAY "CKOPEN ERROR, STATUS = ", STAT.
007600 IF STATUS-KEY-1= "9" THEN
007700 CALL "CKERROR" USING STAT, RESULT
007800 DISPLAY "CKERROR NO. ", RESULT.
007900 STOP RUN.
008000 WRITE-F.
008100
008200
008300
008400
008500
008600
008700
008800 READ DATA-FILE INTO DAT
008900 AT END GO TO FINISH.
MOVE "DC362" TO WS-PRG-NAME.
MOVE "75000" TO WS-MEM-SIZE.
009000 MOVE WS-PRG-NAME TO PRG-NAME.
MOVE WS-MEM-SIZE TO MEM-SIZE.
010000 CALL "CKWRITE" USING FILETABLE, STAT, REC, RECSIZE.
010100 IF STATUS-KEY-1="0" THEN
010200 DISPLAY REC.
010300 GO TO WRITE-F.
010400 IF STAT="21" THEN
010500 DISPLAY "SEQUENCE ERROR IN", PRG-NAME OF REC
010600 GO TO WRITE-F.
010700 IF STAT = "22" THEN
010800 DISPLAY "DUPLICATE KEY", PRG-NAME OF REC
010900 GO TO WRITE-F.
011000 IF STAT = "24" THEN
011100 DISPLAY "END OF FILE"
011200 GO TO FINISH.
011300 FINISH.
011400 CLOSE DATA-FILE.
011500 CALL "CKCLOSE" USING FILETABLE, STAT.
011600 IF STATUS-KEY-1="9" THEN
011700 CALL "CKERROR" USING STAT, RESULT
011800 DISPLAY "CKCLOSE ERROR NO. ", RESULT.
011900 STOP RUN.