home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
rspdbs.zip
/
RSPDBS.CBL
Wrap
Text File
|
1993-09-26
|
10KB
|
255 lines
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMP04C.
******************************************************************
* RSPEASY - DOCTORED STORED PROCEDURE *
* *
* THIS SAMPLE STORED PROCEDURE WAS WRITTEN TO USE A "STD" *
* OUTPUT PIPE FOR ILLUSTRATION. IT REQUIRES NO PARAMETERS *
* *
******************************************************************
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
******************************************************************
* POINTERS TO INPUT AND OUTPUT RECORD AREA. *
******************************************************************
01 SAMPLE-POINTER.
10 OUTPUTPOINTER USAGE IS POINTER.
10 INPUTPOINTER USAGE IS POINTER.
******************************************************************
* SWITCHES FOR RECORD PROCESSING CONTROL. *
******************************************************************
01 WS-SWITCHES.
10 WS-ERROR-HAPPENED-SW PIC X(01) VALUE 'N'.
88 ERROR-HAPPENED VALUE 'Y'.
88 NO-ERROR-YET VALUE 'N'.
******************************************************************
* OUTPUT RECORD DESCRIPTION. *
******************************************************************
01 WS-OUT-DATA-MSG.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE FIRST HUNDRED CHARACTERS - SENT.'.
10 WS-OUT-INPUT PIC X(17) VALUE SPACES.
10 FILLER PIC X(33) VALUE
'890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE 2ND HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE THIRD HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE FOURT HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE FIFTH HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE SIXTH HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE 7TH HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(50) VALUE
'**--> THIS IS THE 8TH HUNDRED CHARACTERS - SENT.'.
10 FILLER PIC X(50) VALUE
'12345678901234567890123456789012345678901234567890'.
10 FILLER PIC X(08) VALUE
'THE END!'.
LINKAGE SECTION.
01 DFHCOMMAREA.
******************************************************************
* LINKAGE TO CALLING PROGRAM *
******************************************************************
COPY SPAREAC.
01 WS-INPUT-REC.
10 WS-INPUT-DATA PIC X(17).
01 WS-OUTPUT-REC.
10 WS-OUTPUT-DATA PIC X(808).
PROCEDURE DIVISION.
000-MAIN-PROCESSING.
PERFORM 100-INITIALIZE THRU 100-EXIT.
IF NO-ERROR-YET
PERFORM 500-PROCESS-I-O THRU 500-EXIT.
PERFORM 900-WRAP-UP THRU 900-EXIT.
EXEC CICS RETURN END-EXEC.
GOBACK.
000-EXIT.
EXIT.
100-INITIALIZE.
MOVE 'OK' TO SPSTATUS.
******************************************************************
* GETMAIN OUTPUT (AND INPUT) RECORD AREA.
******************************************************************
EXEC CICS
GETMAIN SET(INPUTPOINTER)
LENGTH(17)
END-EXEC.
SET ADDRESS OF WS-INPUT-REC TO INPUTPOINTER.
PERFORM 110-OPEN-INPUT-PIPE THRU 110-EXIT.
EXEC CICS
GETMAIN SET(OUTPUTPOINTER)
LENGTH(808)
END-EXEC.
SET ADDRESS OF WS-OUTPUT-REC TO OUTPUTPOINTER.
PERFORM 120-OPEN-OUTPUT-PIPE THRU 120-EXIT.
100-EXIT.
EXIT.
110-OPEN-INPUT-PIPE.
******************************************************************
* OPEN THE INPUT PIPE. *
******************************************************************
MOVE 'INPUT' TO SPMODE.
MOVE 'STD' TO SPFORMAT.
MOVE 55 TO SPMAXLEN.
CALL 'OPENPIPE' USING SPAREA.
******************************************************************
* IF OPEN FAILED, THEN ISSUE AN ERROR MESSAGE. *
******************************************************************
IF SPRC NOT = '000'
MOVE 'ERROR OPENING STANDARD INPUT PIPE.' TO SPMSG
MOVE 'Y' TO WS-ERROR-HAPPENED-SW
PERFORM 800-DO-MESSAGE THRU 800-EXIT.
110-EXIT.
EXIT.
120-OPEN-OUTPUT-PIPE.
MOVE 808 TO SPMAXLEN.
MOVE 'STD' TO SPFORMAT.
MOVE 'OUTPUT' TO SPMODE.
CALL 'OPENPIPE' USING SPAREA.
******************************************************************
* IF OPEN FAILED, THEN ISSUE AN ERROR MESSAGE. *
******************************************************************
IF SPRC NOT = '000'
MOVE 'ERROR OPENING STANDARD OUTPUT PIPE.' TO SPMSG
MOVE 'Y' TO WS-ERROR-HAPPENED-SW
PERFORM 800-DO-MESSAGE THRU 800-EXIT.
120-EXIT.
EXIT.
500-PROCESS-I-O.
PERFORM 540-PROCESS-DATA-RECS THRU 540-EXIT.
500-EXIT.
EXIT.
540-PROCESS-DATA-RECS.
PERFORM 541-GET-17-INPUT THRU 541-EXIT.
PERFORM 542-SEND-808-RECORD THRU 542-EXIT.
540-EXIT.
EXIT.
541-GET-17-INPUT.
IF SPSTATUS = 'OK'
SET SPINTO TO ADDRESS OF WS-INPUT-REC
MOVE 17 TO SPRECLEN
CALL 'GETPIPE' USING SPAREA
IF SPRC NOT = '000'
MOVE 'ERROR GETTING KEYWORDS' TO SPMSG
MOVE 'Y' TO WS-ERROR-HAPPENED-SW
PERFORM 800-DO-MESSAGE THRU 800-EXIT
END-IF
END-IF.
541-EXIT.
EXIT.
542-SEND-808-RECORD.
IF SPSTATUS = 'OK'
MOVE WS-INPUT-DATA TO WS-OUT-INPUT
MOVE WS-OUT-DATA-MSG TO WS-OUTPUT-REC
SET SPFROM TO ADDRESS OF WS-OUTPUT-REC
MOVE 808 TO SPRECLEN
CALL 'PUTPIPE' USING SPAREA
IF SPRC NOT = '000'
MOVE 'ERROR PUTTING KEYWORDS' TO SPMSG
MOVE 'Y' TO WS-ERROR-HAPPENED-SW
PERFORM 800-DO-MESSAGE THRU 800-EXIT
END-IF
END-IF.
542-EXIT.
EXIT.
800-DO-MESSAGE.
******************************************************************
* SOMETHING FAILED, SO ISSUE AN ERROR MESSAGE AND GET OUT. *
******************************************************************
MOVE 'E' TO SPSTATUS.
CALL 'MESSAGE' USING SPAREA.
800-EXIT.
EXIT.
900-WRAP-UP.
******************************************************************
* CLOSE PIPES - ISSUE STATUS. *
******************************************************************
IF SPSTATUS = 'OK'
MOVE 'INPUT' TO SPMODE
CALL 'CLOSPIPE' USING SPAREA
MOVE 'OUTPUT' TO SPMODE
CALL 'CLOSPIPE' USING SPAREA
END-IF.
CALL 'STATUS' USING SPAREA.
900-EXIT.
EXIT.