Sample Program: Using Packed Decimal

*
*  EMMI SCHATZ
*  PACKED DECIMAL EXAMPLE
*
PACKED   CSECT
         STM  14,12,12(13)              SAVE REGISTERS
         BALR  12,0                     LOAD BASE ADDR IN R12
         USING *,12                     DESIGNATE R12 AS BASE REGISTER
         OPEN  INFILE                   OPEN INPUT FILE
         OPEN  OUTFILE,OUTPUT           OPEN OUTPUT FILE
*
         MVI   OUTREC,C' '
         MVC   OUTREC+1(132),OUTREC     CLEAR OUTPUT RECORD
         PUT   OUTFILE,OUTREC           WRITE BLANK LINE TO OUTFILE
*
*  READ NUMS, ADD THEM UP
*
         GET   INFILE,INREC             READ LINE OF INPUT
         PACK  PNUM,NUM1                CONVERT NUM1 TO PACKED
         ZAP   PTOT,PNUM                MOVE NUM1 TO TOT
         PACK  PNUM,NUM2                CONVERT NUM2 TO PACKED
         AP    PTOT,PNUM                ADD NUM2 TO TOT
         PACK  PNUM,NUM3                CONVERT NUM3 TO PACKED
         AP    PTOT,PNUM                ADD NUM3 TO TOT
*
*  OUTPUT NUMS AND TOTAL
*
         MVC   NUM1OUT,NUM1             COPY NUM1 TO OUTREC
         MVC   NUM2OUT,NUM2             COPY NUM2 TO OUTREC
         MVC   NUM3OUT,NUM3             COPY NUM3 TO OUTREC
         UNPK  TOTOUT,PTOT              CONVERT TOT TO EBCDIC
         OI    TOTOUT+5,X'F0'           SET ZONE FOR SIGN
         PUT   OUTFILE,OUTREC           WRITE OUTREC TO FILE
*
EOJ      CLOSE INFILE                   CLOSE INPUT FILE
         CLOSE OUTFILE                  CLOSE OUTPUT FILE
         LM    14,12,12(13)             RESTORE REGISTERS
         RETURN                         RETURN TO OS
*
*  ERROR MESSAGE AND RETURN FOR I/O ERROR ON INPUT
*
*INERR    WTO   'INPUT FILE NUMIN NOT FOUND'
INERR    LM    14,12,12(13)
         RETURN
*
*  ERROR MESSAGE AND RETURN FOR I/O ERROR ON STUDENT OUTPUT
*
*OUTERR   WTO   'I/O ERROR ON OUTPUT FILE NUMOUT'
OUTERR   LM    14,12,12(13)
         RETURN
*
*  FILE DESCRIPTION FOR INPUT FILE
*
INFILE   DCB   LRECL=80,                                               X
               RECFM=F,                                                X
               MACRF=G,                                                X
               EODAD=EOJ,                                              X
               SYNAD=INERR,                                            X
               DDNAME=NUMEB
*
*  FILE DESCRIPTION FOR OUTPUT FILE
*
OUTFILE  DCB   LRECL=133,RECFM=F,MACRF=P,SYNAD=OUTERR,                 X
               DDNAME=NUMOUT
*
*  DATA AREAS
*
*
*  INPUT RECORD
*
INREC    DS    0CL80
NUM1     DS    CL5
NUM2     DS    CL5
NUM3     DS    CL5
         DS    CL65
*
*  OUTPUT RECORD
*
OUTREC   DS    0CL133
         DS    CL6
NUM1OUT  DS    CL5
         DS    CL5
NUM2OUT  DS    CL5
         DS    CL5
NUM3OUT  DS    CL5
         DS    CL5
TOTOUT   DS    CL6
         DS    CL91
*
PNUM     DS    PL3
PTOT     DS    PL4
         END


Email Me | Office Hours | My Home Page | Department Home | MCC Home Page

© Copyright Emmi Schatz 2003