         MACRO                                                          01000020
&NAME    XLATE &AREA,&LENGTH,&TO=E                                      02000020
.*                                                                      02010002
.*       MACRO DELETIONS/CHANGES FOR VS2 RELEASE 4                      02020003
.*0000                                                         @ZA02217 02021003
.*                                                                      02030002
.*                                                                      02040002
.********************************************************************** 02050002
.*                                                                      02060002
.* MODULE NAME = XLATE (VS2-2)                                          02070002
.*                                                                      02080002
.* DESCRIPTIVE NAME = EBCDIC/ASCII TRANSLATE SVC                        02090002
.*                                                                      02100002
.* COPYRIGHT = NONE                                                     02110002
.*                                                                      02120002
.* STATUS = CHANGE LEVEL 001                                            02130003
.*                                                                      02140002
.* FUNCTION = THIS MACRO SETS UP THE INTERFACE FOR SVC 103 (IGC0010C).  02150002
.*            IS IS USUALLY USED WITH READING OR WRITING ASCII          02152003
.*            AL OR NL MAGNETIC TAPE.                                   02155003
.*            IT FIRST LOADS REGISTER 0 WITH THE NUMBER OF BYTES        02160002
.*            TO BE TRANSLATED AND REGISTER 1 WITH THE ADDRESS OF       02170002
.*            THE DATA TO BE TRANSLATED.  BIT 0 OF REGISTER 1 IS SET    02180002
.*            TO INDICATE THE DIRECTION OF TRANSLATION:  BIT 0 = 0      02190002
.*            INDICATES TO TRANSLATE FROM ASCII TO EBCDIC, BIT 0 = 1    02200002
.*            INDICATES TO TRANSLATE FROM EBCDIC TO ASCII.  IT THEN     02210002
.*            ISSUES SVC 103.                                           02220002
.*                                                                      02230002
.* NOTES = SEE BELOW                                                    02240002
.*                                                                      02250002
.*      DEPENDENCIES = NONE                                             02260002
.*                                                                      02270002
.*      RESTRICTIONS = REGISTERS USED AS ARGUMENTS MUST BE IN THE       02280002
.*                     FORM (R), WHERE R MAY BE ANY REGISTER 2 - 15.    02290002
.*                     THE HIGH ORDER BYTE IS SUPPOSED TO BE ZERO.      02292003
.*                     WHERE REGISTER 0 OR 1 IS ALLOWED, FOR            02294003
.*                     EFFIENCY IT SHOULD BE WRITTEN AS (0) OR (1)      02296003
.*                     AND NOT (REG0).                                  02298003
.*                                                                      02300002
.*      REGISTER CONVENTIONS = NOT APPLICABLE                           02310002
.*                                                                      02320002
.* PATCH LABEL = NOT APPLICABLE                                         02330002
.*                                                                      02340002
.* MODULE TYPE = MACRO                                                  02350002
.*                                                                      02360002
.*      PROCESSOR = ASSEMBLER LANGUAGE                                  02370002
.*                                                                      02380002
.*      MODULE SIZE = NOT APPLICABLE                                    02390002
.*                                                                      02400002
.*      ATTRIBUTES = NOT APPLICABLE                                     02410002
.*                                                                      02420002
.* ENTRY POINT = NOT APPLICABLE                                         02430002
.*                                                                      02440002
.*      PURPOSE = SEE FUNCTION                                          02450002
.*                                                                      02460002
.*      LINKAGE = LABEL XLATE AREA,LENGTH,TO=                           02470003
.*                                                                      02500002
.*      INPUT =   OPTIONAL LABEL SPECIFIED AS AN ACCEPTABLE ASSEMBLER   02530003
.*                LABEL.                                                02540002
.*                                                                      02550002
.*                THE AREA ARGUMENT IS THE FIRST POSITIONAL PARAMETER.  02560002
.*                IT MAY BE (1) THE NAME OF A DATA AREA,                02570003
.*                (2) REGISTER 1 OR 2-15 CONTAINING THE ADDRESS         02580003
.*                OF THE DATA AREA TO BE TRANSLATED.                    02590003
.*                                                                      02610002
.*                THE LENGTH ARGUMENT IS THE SECOND POSITIONAL          02620002
.*                PARAMETER.  IT MAY BE (1) THE BYTE COUNT, OR          02630003
.*                (2) REGISTER 0 OR 2-15 CONTAINING THE BYTE COUNT.     02640003
.*                                                                      02660002
.*                TO= IS A KEYWORD PARAMETER WHOSE VALUES ARE TO=A      02670002
.*                (TRANSLATE TO ASCII) AND TO=E (TRANSLATE TO EBCDIC).  02680002
.*                                                                      02690002
.*      OUTPUT = INTERFACE TO SVC 103                                   02700002
.*                                                                      02710002
.* EXIT-NORMAL = MEND STATEMENT                                         02720002
.*                                                                      02730002
.* EXIT-ERROR = ERROR MESSAGES:                                         02740002
.*                                                                      02750002
.*      MNOTE 8,EXCESSIVE POSITIONAL PARAMETERS - IGNORED               02755003
.*      MNOTE 8,AREA AND LENGTH OPERANDS ARE EQUAL                      02760003
.*      MNOTE 12,IHB004 REQUIRED OPERAND(S) NOT SPECIFIED               02770003
.*      MNOTE 8,INVALID REGISTER SPECIFICATION                          02780002
.*                                                                      02790002
.* EXTERNAL REFERENCES = NONE                                           02800002
.*                                                                      02810002
.*      ROUTINES = NONE                                                 02820002
.*                                                                      02830002
.*      DATA AREAS = NONE                                               02840002
.*                                                                      02850002
.*      CONTROL BLOCKS = NONE                                           02860002
.*                                                                      02870002
.* TABLES = NONE                                                        02880002
.*                                                                      02890002
.* MACROS = IHBERMAC                                                    02900003
.*                                                                      02910002
.* CHANGE ACTIVITY = SEE DELETIONS/CHANGES PRECEDING THE MACRO PROLOGUE 02920002
.*                                                                      02930002
.********************************************************************** 02940002
.*                                                                      02950002
         AIF   (N'&SYSLIST EQ 2).TWOARGS                       @ZA02217 17000003
         AIF   (N'&SYSLIST LT 2).ERR1                                   18000020
         MNOTE 8,'EXCESSIVE POSITIONAL PARAMETERS - IGNORED'   @ZA02217 18500003
.TWOARGS AIF   ('&AREA' EQ '&LENGTH').ERR                      @ZA02217 19000003
         AIF   ('&AREA' EQ '(0)' OR '&LENGTH' EQ '(1)').ERR2            20000020
         AIF   ('&AREA'(1,1) EQ '(').REG1                      @ZA02217 29000003
&NAME    LA    1,&AREA                  ADDRESS OF AREA TO TRANSLATE    31000003
         AGO   .LEN1                                                    32000020
.REG1    AIF   ('&AREA' EQ '(1)').NAME                         @ZA02217 33000003
&NAME    LR    1,&AREA(1)               ADDRESS OF AREA TO TRANSLATE    34000003
         AGO   .LEN1                                                    35000020
.NAME    AIF   ('&NAME' EQ '').LEN1                            @ZA02217 35500003
&NAME    DS    0H                                                       36000003
.LEN1    AIF   ('&LENGTH'(1,1) EQ '(').REG2                             37000020
         LA    0,&LENGTH.(,0)           LENGTH TO TRANSLATE             40000002
         AGO   .TO                                             @ZA02217 41000003
.REG2    AIF   ('&LENGTH' EQ '(0)').TO                         @ZA02217 42000003
         LR    0,&LENGTH(1)             LENGTH TO TRANSLATE             43000003
.TO      AIF   ('&TO' EQ 'E').SVC       ALREADY SET ASCII TO EBCDIC     44000003
         LA    15,X'80'                 CONSTRUCT BIT MASK              45000003
         SLL   15,24                    IN HIGH ORDER BYTE              46000003
         OR    1,15                     SET EBCDIC TO ASCII INDICATOR   47000003
.SVC     SVC   103                      ISSUE XLATE SVC                 48000003
         MEXIT                                                 @ZA02217 49000003
.ERR     MNOTE 8,'AREA AND LENGTH OPERANDS ARE EQUAL'          @ZA02217 52000003
         MEXIT                                                          53000020
.ERR1    IHBERMAC 24  IHB004 REQUIRED OPERAND(S) NOT SPECIFIED @ZA02217 54000003
         MEXIT                                                          55000020
.ERR2    MNOTE 8,'INVALID REGISTER SPECIFICATION'                       56000020
         MEND                                                  @ZA02217 57000003
