Here are the ASSIST XDECI and XDECO source compatibly MACROS.  I'll post the
subroutines separately:

         MACRO
00008
&LABEL   XDECI &REG,&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 &REG, 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 &REG, 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 &REG
00029
         LM    14,1,4(14)  .       RELOAD REGS
00030
         BO    *+8         .       BRANCH IF &REG SHOULDN'T CHANGE
00031
         L     &REG,&XLABL+16  .   GET VALUE FOR &REG
00032
         AIF   (T'&REG EQ 'N' AND '&REG' 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 &REG,&ADDRESS
00009
.*--> MACRO: XDECO      EXTENDED DECIMAL OUTPUT CONVERSION  * * * * * *
00010
.*       USES MODULE XXXXDECO TO CONVERT VALUE IN REGISTER &REG 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    &REG,&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.

Reply via email to