IDENTIFICATIONDIVISION. PROGRAM-ID. OSCICS8C. DATE-WRITTEN. 09/17/96. DATE-COMPILED. ****************************************************************** ** ** (c) 1995 by Sybase, Inc. All Rights Reserved ** ******************************************************************
****************************************************************** ** PROGRAM: OSCICS8C TRAN:SY8C.... ** ** THIS PROGRAM IS A THE OPEN SERVER VERSION OF RSP8C. RECEIVES ** A TEXT INPUT STRING(10,000 BYTES) AND RETURNS IT IN A 50 BYTE ** COLUMN ONE ROW AT A TIME... ** Example: exec sy8c 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ******************************************************************
LINKAGESECTION. ************************************************************** * THE LINKAGE SECTION DEFINES MASKS FOR DATA AREAS THAT ARE * PASSED BETWEEN THIS PROGRAM. **************************************************************
01 DFHCOMMAREA PIC X(1).
PROCEDUREDIVISION.
000-MAIN-PROCESSING.
PERFORM 100-INITIALIZE THRU 100-EXIT.
PERFORM 200-PROCESS-INPUT THRU 200-EXIT.
PERFORM 300-PROCESS-OUTPUT THRU 300-EXIT.
PERFORM 900-ALL-DONE THRU 900-EXIT.
GOBACK.
000-EXIT. EXIT.
100-INITIALIZE.
****************************************************** * INTIALIZED THE TDS CONNECTION AND RECEIVE THE * RPC PARM........ ******************************************************
*==> ESTABLISH GATEWAY ENVIRONMENT <===*
CALL'TDINIT'USING DFHEIBLK, GWL-RC, GWL-INIT-HANDLE. IF GWL-RC NOT = TDS-OK THEN PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF.
*==> ACCEPT CLIENT REQUEST <===*
CALL'TDACCEPT'USING GWL-PROC, GWL-RC, GWL-INIT-HANDLE,
SNA-CONN-NAME, SNA-SUBC. IF GWL-RC NOT = TDS-OK THEN PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF.
*==> TO MAKE SURE WE WERE STARTED BY RPC REQUEST... <===*
CALL'TDINFRPC'USING GWL-PROC, GWL-RC,
GWL-REQUEST-TYP, GWL-RPC-NAME,
GWL-COMM-STATE. IF GWL-RC NOT = TDS-OK OR
GWL-REQUEST-TYP NOT = TDS-RPC-EVENT THEN MOVE GWL-RC TO WS-MSG-RC MOVE'TDINFRPC'TO WS-MSG-FUNC PERFORM 920-SEND-MESSAGE THRU 920-EXIT PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF.
100-EXIT. EXIT.
200-PROCESS-INPUT. **************************************************************** * RECEIVE THE INPUT PARAMETER INTO HOST VARIBLE ****************************************************************
*---> Find out how many parms are being passed <---*
CALL'TDNUMPRM'USING GWL-PROC, GWL-NUMPRM-PARMS.
*---> More than one pump back a message <---*
IF GWL-NUMPRM-PARMS not = +1 THEN MOVE'Invalid Number of Parameters' TO WS-MSG-TEXT MOVE GWL-RC TO WS-MSG-RC MOVE'TDNUMPRM'TO WS-MSG-FUNC PERFORM 920-SEND-MESSAGE THRU 920-EXIT PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF
*---> Get that parm into into the host varible <---*
IF GWL-NUMPRM-PARMS = +1 THEN CALL'TDRCVPRM'USING GWL-PROC, GWL-RC,
GWL-NUMPRM-PARMS,
WS-INPUT-DATA,
TDSLONGVARCHAR,
WS-INPUT-LEN,
GWL-ACTUAL-LEN IF GWL-RC NOT = TDS-OK THEN MOVE GWL-RC TO WS-MSG-RC MOVE'TDRCVPRM'TO WS-MSG-FUNC PERFORM 920-SEND-MESSAGE THRU 920-EXIT PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF END-IF.
200-EXIT. EXIT.
300-PROCESS-OUTPUT. **************************************************************** * BREAK UP THE 10K INPUT FIELDS INTO A 50 BYTE COLUMN AND SEND ****************************************************************
MOVE +1 TO COLUMN-NUMBER. MOVELENGTHOF WS-OUTPUT-DATA TO HOST-LEN
COLUMN-LEN. MOVELENGTHOF WS-OUTPUT-COL-NAME TO COLUMN-NAME-LEN. CALL'TDESCRIB'USING GWL-PROC,
GWL-RC,
COLUMN-NUMBER,
TDSCHAR,
HOST-LEN,
WS-OUTPUT-DATA,
TDS-ZERO,
TDS-FALSE,
TDSCHAR,
COLUMN-LEN,
WS-OUTPUT-COL-NAME,
COLUMN-NAME-LEN.
IF GWL-RC NOT = TDS-OK THEN MOVE GWL-RC TO WS-MSG-RC MOVE'TDESCRIB'TO WS-MSG-FUNC PERFORM 920-SEND-MESSAGE THRU 920-EXIT PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF.
PERFORMVARYING I FROM 1 BY 1 UNTIL I > GWL-ACTUAL-LEN COMPUTE J = J + 1 MOVE WS-INPUT-CHAR(I) TO WS-OUTPUT-CHAR(J) IF J = 50 THEN PERFORM 310-SEND-ROW THRU 310-EXIT MOVEZEROTO J MOVESPACESTO WS-OUTPUT-DATA END-IF END-PERFORM. IF J > ZERO THENPERFORM 310-SEND-ROW THRU 310-EXIT.
300-EXIT. EXIT.
310-SEND-ROW. **************************************************************** * SEND ROW OF DATA TO CLIENT.... *****************************************************************
CALL'TDSNDROW'USING GWL-PROC, GWL-RC IF GWL-RC NOT = TDS-OK THEN MOVE GWL-RC TO WS-MSG-RC MOVE'TDSNDROW'TO WS-MSG-FUNC PERFORM 920-SEND-MESSAGE THRU 920-EXIT PERFORM 910-ERR-PROCESS THRU 910-EXIT END-IF.
310-EXIT. EXIT.
EJECT
900-ALL-DONE. ****************************************************************** * CLOSE CONNECTION TO CLIENT AND RETURN TO CICS... * ******************************************************************
CALL'TDSNDDON'USING GWL-PROC, GWL-RC, WRK-DONE-STATUS,
GWL-RETURN-ROWS, TDS-ZERO, TDS-ENDRPC. IF GWL-RC NOT = TDS-OK THEN PERFORM 980-CICS-DUMP THRU 980-EXIT PERFORM 990-CICS-RETURN THRU 990-EXIT END-IF.
910-ERR-PROCESS. ****************************************************************** * PERFORM ALL-DONE IN A ERROR STATE * ******************************************************************
MOVEZEROTO GWL-RETURN-ROWS. MOVE TDS-DONE-ERROR TO WRK-DONE-STATUS. PERFORM 900-ALL-DONE THRU 900-EXIT.
910-EXIT. EXIT.
920-SEND-MESSAGE. ****************************************************************** * SEND ERROR MESSAGE DOWN TO CLIENT * ****************************************************************** CALL'TDSTATUS'USING GWL-PROC, GWL-RC, GWL-STATUS-NR,
GWL-STATUS-DONE, GWL-STATUS-COUNT,
GWL-STATUS-COMM,
GWL-STATUS-RETURN-CODE,
GWL-STATUS-SUBCODE.
*==> ENSURE THAT WE ARE IN THE CORRECT STATE TO SEND A MESSAGE <=* IF GWL-RC NOT = TDS-OK THEN PERFORM 980-CICS-DUMP THRU 980-EXIT PERFORM 990-CICS-RETURN THRU 990-EXIT END-IF.
IF GWL-STATUS-COMM = TDS-RECEIVE THEN CALL'TDCANCEL'USING GWL-PROC, GWL-RC.
MOVELENGTHOF EIBTRNID TO GWL-TRAN-LEN. MOVELENGTHOF WS-MSG TO GWL-MSG-LEN. CALL'TDSNDMSG'USING GWL-PROC, GWL-RC, TDS-ERROR-MSG,
MSG-NR, TDS-ERROR-SEV, TDS-ZERO,
TDS-ZERO, EIBTRNID, GWL-TRAN-LEN,
WS-MSG, GWL-MSG-LEN.
920-EXIT. EXIT.
980-CICS-DUMP. ****************************************************************** * CAUSE A CICS TRANSACTION DUMP USUALLY BECAUSE SOMETHING IS BAD * ****************************************************************** EXECCICS
DUMP DUMPCODE('SY8C') NOHANDLE END-EXEC.
980-EXIT. EXIT.
990-CICS-RETURN. ****************************************************************** * RETURN TO CICS... * ******************************************************************
EXECCICS RETURN END-EXEC.
990-EXIT. EXIT.
Messung V0.5
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.