Here are the ASSIST XDECI and XDECO source compatibly MACROS. I'll post the subroutines separately:
MACRO 00008 &LABEL XDECI ®,&ADDRESS 00009 .*--> MACRO: XDECI EXTENDED DECIMAL INPUT CONVERSION * * * * * * * 00010 .* EXTENDED DECIMAL INPUT MACRO - ENABLES PROGRAMS * 00011 .* WRITTEN FOR ASSIST TO BE RUN UNDER OS/360 DIRECTLY. * 00012 .* USES MODULE XXXXDECI TO SCAN DECIMAL STRING BEGINNING AT * 00013 .* &ADDRESS, CONVERT ITS VALUE INTO REGISTER ®, AND SET * 00014 .* REGISTER R1 AS A SCAN POINTER TO THE DELIMITER FOLLOWING THE * 00015 .* STRING OF DECIMAL DIGITS. THE CONDITION CODE IS SET BY THE * 00016 .* VALUE IN ®, UNLESS AN ERROR OCCURS, IN WHICH CASE CC=3. * 00017 .* SEE ASSIST MANUAL FOR USAGE INSTRUCTIONS. * 00018 .* -- THE PENNSYLVANIA STATE UNIVERSITY -- JOHN R. MASHEY * 00019 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00020 LCLC &XLABL FOR CREATION OF LABEL 00021 &XLABL SETC 'XX&SYSNDX.E' CREATE UNIQUE LABEL 00022 CNOP 2,4 . LINE UP BOUNDRY 00023 &LABEL STM 14,1,&XLABL . SAVE LINKAGE REGS 00024 LA 0,&ADDRESS . SAVE ADDRESS FOR SCANNING 00025 L 15,&XLABL-4 . GET ADCON FOR CONVERSION 00026 BALR 14,15 . CALL ROUTINE, PT WITH R14 00027 DC V(XXXXDECI) . ADCON FOR CONVERSION ROUTINE 00028 &XLABL DS 5F . REGS 14,15,0,1, VALUE FOR ® 00029 LM 14,1,4(14) . RELOAD REGS 00030 BO *+8 . BRANCH IF ® SHOULDN'T CHANGE 00031 L ®,&XLABL+16 . GET VALUE FOR ® 00032 AIF (T'® EQ 'N' AND '®' NE '1').XXEXIT SKIP IF SAFE 00033 L 1,&XLABL+12 . USER MAY HAVE REG=1, LOAD FOR SAFE 00034 .XXEXIT MEND 00035 MACRO 00008 &LABEL XDECO ®,&ADDRESS 00009 .*--> MACRO: XDECO EXTENDED DECIMAL OUTPUT CONVERSION * * * * * * 00010 .* USES MODULE XXXXDECO TO CONVERT VALUE IN REGISTER ® TO * 00011 .* AN EDITED 12-BYTE FIELD, WITH SIGN, AT LOCATION &ADDRESS. * 00012 .* EXTENDED DECIMAL OUTPUT MACRO - ENABLES PROGRAMS * 00013 .* WRITTEN FOR ASSIST TO BE RUN UNDER OS/360 DIRECTLY. * 00014 .* SEE ASSIST USER MANUAL FOR USAGE INSTRUCTIONS. * 00015 .* -- THE PENNSYLVANIA STATE UNIVERSITY -- JOHN R. MASHEY * 00016 .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00017 LCLC &XLABL FOR CREATION OF UNIQUE LABEL 00018 &XLABL SETC 'XX&SYSNDX.D' CREATE UNIQUE LABEL 00019 CNOP 2,4 . LINE UP ON RIGHT BOUNDRY 00020 &LABEL STM 14,0,&XLABL . STORE LINKAGE REGS 00021 ST ®,&XLABL+12 . SAVE VALUE TO BE CONVERTED 00022 LA 0,&ADDRESS . OBTAIN ADDRESS OPERAND FIELD 00023 L 15,&XLABL-4 . GET ADCON FOR CONVERSION PROG 00024 BALR 14,15 . CALL XXXXDECO, PT R14 00025 DC V(XXXXDECO) . ADCON FOR CONVERSION PROG 00026 &XLABL DS 4F . REGS 14,15,0, REG TO BE CONVERTED 00027 LM 14,0,4(14) . RELOAD LINKAGE REGISTERS 00028 MEND 00029 -----Original Message----- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Thursday, June 4, 2020 8:38 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Convert *signed* EBCDIC to packed decimal Why not look at ASSIST, which has the XDECI opcode to do the job? It also has simplified I/O instructions. But if you want true assembler, yous gots to do the stuff yourself.