Sample OUTEXIT routine
The following sample message output exit program translates generated
data from EBCDIC to 8-bit ASCII.
TITLE 'Sample OUTEXIT - Output Data Exit'
*---------------------------------------------------------------------*
* This routine is a sample output exit to translate generated data *
* from EBCDIC to 8 bit ASCII. This exit performs this function for *
* any SNA device. It translates the RU portion of all generated *
* unformatted Function Management Data requests and sets the *
* alternate code bit in the request/response header. *
* To locate the RU, it checks the TH FID type and increments past *
* the TH and RH. *
* *
* Use of this exit would be indicated by coding the OUTEXIT operand *
* on the NTWRK statement (OUTEXIT=ASCIIOUT). *
*---------------------------------------------------------------------*
ASCIIOUT CSECT
STM 14,12,12(13) Save caller's registers
LR 12,15 Establish base register
USING ASCIIOUT,12
*
LR 3,1 Parameter list address
L 4,8(3) Get DEV address
USING DEV,4 Use DEV DSECT
TM DEVTYPE,DEVSNA Test for SNA device type
BNO RETURN Skip translation if not SNA
L 5,0(3) Get address of data
L 6,16(3) Get length
LH 6,0(6) of data
LA 8,2 Length of FID3 TH
MVC FIDTYPE,0(5) Get byte containing FID type
NI FIDTYPE,X'F0' Isolate FID type
CLI FIDTYPE,X'20' Test for FID2
BE FID2 Branch if found
CLI FIDTYPE,X'30' Test for FID3
BE FIDFOUND Branch if found
CLI FIDTYPE,X'40' Test for FID4
BNE RETURN Return if not FID4
LA 8,20(8) Add FID4/FID2 length difference
FID2 LA 8,4(8) Add FID2/FID3 length difference
FIDFOUND LA 7,0(8,5) Point to RH
LA 8,3(,8) Add length of RH
LA 9,0(8,5) Point to RU
SLR 6,8 Get length of RU
BNO RETURN Branch if nothing to translate
TM 0(7),X'E8' Test for unformatted FM Data
BNZ RETURN request
OI 2(7),X'08' Set alternate code
*
* Translate the data from EBCDIC to ASCII
*
LA 8,256 Translate 256 at a time
TRLOOP CLR 6,8 256 or less left
BNH TRREST Go translate last if so
TR 0(256,9),EBC2ASC Translate 256 bytes
SLR 6,8 Decrement count
ALR 9,8 Increment data pointer
B TRLOOP
TRREST BCTR 6,0 Decrement for translate
EX 6,TRRMDR Translate remainder of data
*
RETURN LM 14,12,12(13) Restore registers
BR 14 Return to caller
*
TRRMDR TR 0(0,9),EBC2ASC Translate remainder of data
*
FIDTYPE DS C Workarea for determining FID type
*
EBC2ASC DS 0CL256 An EBCDIC to 8 bit ASCII translate table
DC XL16'00010203CF09D37FD4D5C30B0C0D0E0F' 0
DC XL16'10111213C7B408C91819CCCD831DD21F' 1
DC XL16'81821C84860A171B89919295A2050607' 2
DC XL16'E0EE16E5D01EEA048AF6C6C21415C11A' 3
DC XL16'20A6E180EB909FE2AB8B9B2E3C282B7C' 4
DC XL16'26A9AA9CDBA599E3A89E21242A293B5E' 5
DC XL16'2D2FDFDC9ADDDE989DACBA2C255F3E3F' 6
DC XL16'D78894B0B1B2FCD6FB603A2340273D22' 7
DC XL16'F861626364656667686996A4F3AFAEC5' 8
DC XL16'8C6A6B6C6D6E6F7071729787CE93F1FE' 9
DC XL16'C87E737475767778797AEFC0DA5BF2F9' A
DC XL16'B5B6FDB7B8B9E6BBBCBD8DD9BF5DD8C4' B
DC XL16'7B414243444546474849CBCABEE8ECED' C
DC XL16'7D4A4B4C4D4E4F505152A1ADF5F4A38F' D
DC XL16'5CE7535455565758595AA0858EE9E4D1' E
DC XL16'30313233343536373839B3F7F0FAA7FF' F
*
* Copy DSECTS from WSim User Exit Interface Library
*
COPY DEV
END