Many many years ago, a Famous Assembler Programmer at Prodigy Services (Fread
Veasley) gave me this routine to externalize a Return Code. I have been using
it for some time and I cant recall Having a problem with it.
I thought I would share it.
********************************************************************* 00970000
* HEXPRINT - THIS SUBROUTINE CONVERTS HEX ADDRESS TO DISPLAY * 00980000
********************************************************************* 00990000
HEXPRINT DS 0H 01000000
USING HEXPRINT,R6 01010000
ST R14,SAVE14A@ SAVE LINKAGE/RETURN REGISTER 01020000
ST R15,WKSV15 SAVE REGISTER 15 01030000
* 01040000
LA R1,OUTSTRNG ADDRESS OF OUTPUT STRING 01050000
L R15,INSTRNG ADDRESS OF INPUT STRING 01060000
LA R0,8 LOOP COUNTER (8 HALF WORDS) 01070000
* 01080000
BK EQU * 01090000
LA R14,15 PLACE 'F' INTO LOW ORDER NIBBLE OF R14 01100000
SLDL R14,4 SHIFT FIRST HEX CHAR INTO R14 FROM 01110000
* HIGH ORDER NIBBLE OF REGISTER 15 01120000
* 01130000
C R14,=F'250' IF (F0 --> F9 THEN OK) 01140000
BL OK 01150000
S R14,=F'57' MUST BE AN ALPHA 01160000
* HIGH ORDER NIBBLE OF REGISTER 15 01170000
* 01180000
OK EQU * 01190000
STC R14,0(R1) STORE CHARACTER IN OUTSTRNG 01200000
LA R1,1(R1) POINT TO NEXT AVAILABLE POSITION 01210000
BCT R0,BK LOOP AGAIN 01220000
* 01230000
L R15,WKSV15 RESTORE REGISTER 15 01240000
L R14,SAVE14A@ RESTORE LINAKGE REGISTER 01250000
BR R14 RETURN TO CALLER 01260000
LTORG GENERATE LOCAL LITTERAL POOL 01270000
DROP R6 TELL ASSEMBLER 01280000
EJECT 01290000
********************************************************************* 01300000
RESPDSECT DSECT 00100000
RESPWORK DS 0A .Alignment 00110000
RSAVE DS 18A .Register Save Area 00120000
RETCODES DS 0A .RETURN/RESPONSE CODES 00130000
RESPONSE DS 1A . HEX RESPONSE CODE 00140000
REASON DS 1A . HEX REASON CODE 00150000
INSTRNG DS A . INPUT STRING 00160000
OUTSTRNG DS D . OUTPUT STRING 00170000
CRESPONSE DS D .Character Response Code 00180000
CREASON DS D .Character Reason Code 00190000
RESPAREA DS CL16 . 00200000
PREVR13 DS A .Previous Register 13 00210000
DS D . 00220000
RESPWORK# EQU *-RESPWORK .Length Of Area 00230000
MEXIT 00240000
MEND 00250000