MACRO 00050000 &MACNAM STTRAN &FLG,&TAB=,&NAME=,&TCHAR=,&SCHAR=,&LIST=,&MF=I 00100000 .********************************************************************** 00150000 .* * 00200000 .* STATUS - CHANGE LEVEL 000 * 00250000 .* * 00300000 .* NAME - STTRAN * 00350000 .* * 00400000 .* FUNCTION - THE STTRAN MACRO IS USED TO: * 00450000 .* 1-SET UP THE USE OF A USER DEFINED TRANSLATE TABLE * 00500000 .* 2-DISCONTINUE THE USE OF A USER DEFINED TRANSLATE TABLE * 00550000 .* 3-ESTABLISH SPECIFIC TRANSLATIONS IN A USER TABLE OR * 00600000 .* A DEFAULT TABLE, CHARACTER BY CHARACTER * 00650000 .* 4-DISCONTINUE PREVIOUS SPECIFIC CHARACTER TRANSLATIONS * 00700000 .* * 00750000 .* THE MACRO PROTOTYPE IS LISTED ABOVE * 00800000 .* * 00850000 .* THE STANDARD FORM OF EXPANSION FOR MF=I: * 00900000 .* * 00904000 .* STTRAN TAB=MYTAB,NAME=TABNAME * 00908000 .* CNOP 0,4 * 00912000 .* BAL 1,*+16 BRANCH AROUND PARAMETERS * 00916000 .* DC A(MYTAB) ADDRESS OF TABLE * 00920000 .* DC A(TABNAME) ADDRESS OF NAME * 00924000 .* DC A(0) ADDRESS OF LIST PARAMETERS * 00928000 .* LA 0,3840+32 SET ENTRY CODE AND FLAGS * 00932000 .* SLL 0,16 SHIFT TO HIGH ORDER BYTES * 00936000 .* SVC 94 TERMINAL CONTROL MACROS SVC * 00940000 .* * 00950000 .* THE STANDARD FORM OF EXPANSION FOR MF=L: * 01000000 .* * 01007000 .* STTRAN LIST=LISTPARM,MF=L * 01014000 .* DS 0F * 01021000 .* DC A(0) ADDRESS OF TABLE * 01028000 .* DC A(0) ADDRESS OF NAME * 01035000 .* DC A(LISTPARM) ADDRESS OF LIST PARAMETERS * 01042000 .* * 01050000 .* THE STANDARD FORM OF EXPANSION FOR MF=E: * 01100000 .* * 01105000 .* STTRAN NOCHAR,NAME=TABNAME,MF=(E,MYLIST) * 01110000 .* LA 1,MYLIST LOAD PARAMETER REG1 * 01115000 .* LA 0,TABNAME LOAD ADDRESS OF NAME * 01120000 .* ST 0,4(,1) STORE NAME ADDR IN PARM LIST * 01125000 .* LA 0,3840+64 SET ENTRY CODE AND FLAGS * 01130000 .* SLL 0,16 SHIFT TO HIGH ORDER BYTES * 01135000 .* SVC 94 TERMINAL CONTROL MACROS SVC * 01140000 .* * 01150000 .********************************************************************** 01200000 LCLA &SYSFLG 01250000 LCLA &SYSEC 01300000 &SYSEC SETA 3840 01350000 AIF ('&MF' EQ 'I' AND '&FLG' EQ '' AND '&TAB' EQ '' AND '&TC*01400000 HAR' EQ '' AND '&LIST' EQ '' AND '&NAME' EQ '' AND '&SCH*01420000 AR' EQ '').ERROR1 01440000 AIF ('&FLG' EQ 'NOTRAN' AND ('&TAB' NE '' OR '&NAME' NE '' O*01500000 R '&TCHAR' NE '' OR '&SCHAR' NE '')).ERROR1 01530000 AIF ('&FLG' EQ 'NOTRAN').TOPMAC 01560000 AIF ('&FLG' EQ 'NOCHAR' AND ('&TAB' NE '' OR '&TCHAR' NE '' *01590000 OR '&SCHAR' NE '')).ERROR1 01620000 AIF ('&FLG' EQ 'NOCHAR' AND '&NAME' EQ '' AND '&MF' EQ 'I').*01650000 ERROR2 01680000 AIF ('&FLG' EQ 'NOCHAR').TOPMAC 01800000 AIF ('&FLG' NE '').ERROR3 01820000 AIF ('&TAB' NE '' AND '&NAME' EQ '' AND '&MF' EQ 'I').ERROR2 01840000 AIF ('&TCHAR' EQ '' AND '&SCHAR' NE '' AND '&MF' NE 'L').ERR*01860000 OR4 01880000 AIF ('&TCHAR' NE '' AND '&SCHAR' EQ '' AND '&MF' NE 'L').ERR*01970000 OR5 01976000 AIF ('&NAME' NE '' AND ('&TAB' EQ '' OR '&FLG' EQ 'NOCHAR') *01990000 AND '&MF' EQ 'I').ERROR6 02010000 .TOPMAC ANOP 02050000 AIF ('&FLG' EQ 'NOTRAN' AND '&LIST' EQ '' AND '&MF' NE 'L').*02070000 NOTRN 02080000 AIF ('&MF' EQ 'L').LNAME 02100000 AIF ('&MF(1)' EQ 'E').ENAME 02120000 AIF ('&MF' NE 'I').ERROR1 02140000 &MACNAM CNOP 0,4 02200000 BAL 1,*+16 BRANCH AROUND PARAMETERS 02250000 AGO .DCONST 02300000 .ENAME ANOP 02350000 IHBOPLST ,,&MACNAM,MF=&MF 02370000 AGO .STADDS 02450000 .LNAME ANOP 02500000 &MACNAM DS 0F 02550000 .DCONST AIF ('&TAB' EQ '').TREG 02600000 AIF ('&TAB'(1,1) EQ '(').TREG 02610000 DC A(&TAB) ADDRESS OF TABLE 02650000 AGO .DNAME 02700000 .TREG ANOP 02750000 DC A(0) ADDRESS OF TABLE 02800000 .DNAME AIF ('&NAME' EQ '').NREG 02850000 AIF ('&NAME'(1,1) EQ '(').NREG 02860000 DC A(&NAME) ADDRESS OF NAME 02900000 AGO .DLIST 02950000 .NREG ANOP 03000000 DC A(0) ADDRESS OF NAME 03050000 .DLIST AIF ('&LIST' EQ '').LREG 03100000 AIF ('&LIST'(1,1) EQ '(').LREG 03110000 DC A(&LIST) ADDRESS OF LIST PARAMETERS 03150000 AGO .CKMF 03200000 .LREG ANOP 03250000 DC A(0) ADDRESS OF LIST PARAMETERS 03300000 .CKMF AIF ('&MF' EQ 'L').LEND 03350000 .STADDS ANOP 03360000 AIF ('&TAB' EQ '').STNAM 03370000 AIF ('&TAB'(1,1) NE '(' AND '&MF' EQ 'I').STNAM 03400000 AIF ('&TAB'(1,1) NE '(').STTABA 03430000 ST &TAB(1),0(,1) STORE TABLE ADDR IN PARM LIST 03500000 AGO .STNAM 03520000 .STTABA ANOP 03550000 LA 0,&TAB LOAD ADDRESS OF TABLE 03600000 ST 0,0(,1) STORE TABLE ADDR IN PARM LIST 03650000 .STNAM ANOP 03660000 AIF ('&NAME' EQ '').STLIST 03670000 AIF ('&NAME'(1,1) NE '(' AND '&MF' EQ 'I').STLIST 03700000 AIF ('&NAME'(1,1) NE '(').STNAMA 03730000 ST &NAME(1),4(,1) STORE NAME ADDR IN PARM LIST 03800000 AGO .STLIST 03820000 .STNAMA ANOP 03850000 LA 0,&NAME LOAD ADDRESS OF NAME 03900000 ST 0,4(,1) STORE NAME ADDR IN PARM LIST 03950000 .STLIST ANOP 03960000 AIF ('&LIST' EQ '').LOAD0 03970000 AIF ('&LIST'(1,1) NE '(' AND '&MF' EQ 'I').LOAD0 04000000 AIF ('&LIST'(1,1) NE '(').STLSTA 04030000 ST &LIST(1),8(,1) STORE LIST ADDR IN PARM LIST 04100000 AGO .LOAD0 04110000 .STLSTA ANOP 04120000 LA 0,&LIST LOAD ADDRESS OF LIST PARMS 04140000 ST 0,8(,1) STORE LIST ADDR IN PARM LIST 04160000 .NOTRN ANOP 04180000 SR 1,1 ZERO REGISTER 1 04200000 .LOAD0 ANOP 04250000 AIF ('&FLG' EQ '').CKCHARS 04280000 AIF ('&FLG' EQ 'NOCHAR').STNOCH 04310000 &SYSFLG SETA 128 04450000 AGO .STREG0 04500000 .STNOCH ANOP 04550000 &SYSFLG SETA 64 04600000 AGO .STREG0 04650000 .CKCHARS AIF ('&TCHAR' EQ '').NOFLG 04700000 &SYSFLG SETA 32 04750000 AGO .STREG0 04800000 .NOFLG ANOP 04850000 &SYSFLG SETA 0 04900000 .STREG0 ANOP 04950000 LA 0,&SYSEC+&SYSFLG SET ENTRY CODE AND FLAGS 05000000 SLL 0,16 SHIFT TO HIGH ORDER BYTES 05050000 AIF ('&TCHAR' EQ '').STSVC 05100000 AIF ('&TCHAR'(1,1) EQ '(').TCREG 05130000 ICM 0,2,&TCHAR SET TERMINAL CHARACTER 05200000 AGO .STSCHAR 05250000 .TCREG ANOP 05300000 ICM 0,2,0(&TCHAR(1)) SET TERMINAL CHARACTER 05350000 .STSCHAR AIF ('&SCHAR'(1,1) EQ '(').SCREG 05380000 ICM 0,1,&SCHAR SET SYSTEM CHARACTER 05450000 AGO .STSVC 05500000 .SCREG ANOP 05550000 ICM 0,1,0(&SCHAR(1)) SET SYSTEM CHARACTER 05600000 .STSVC ANOP 05650000 SVC 94 TERMINAL CONTROL MACROS SVC 05700000 MEXIT 05750000 .LEND AIF ('&TCHAR' EQ '' AND '&SCHAR' EQ '').END 05760000 IHBERMAC 1016,TCHAR/SCHAR,MF-L 05766000 .END MEXIT 05780000 .ERROR1 ANOP 05800000 IHBERMAC 54,,, 05850000 MEXIT 05900000 .ERROR2 ANOP 05950000 IHBERMAC 1006,NAME 06000000 MEXIT 06050000 .ERROR3 ANOP 06100000 IHBERMAC 1008,&FLG,1 06150000 MEXIT 06200000 .ERROR4 ANOP 06250000 IHBERMAC 1010,SCHAR,TCHAR 06300000 MEXIT 06350000 .ERROR5 ANOP 06400000 IHBERMAC 1010,TCHAR,SCHAR 06450000 MEXIT 06500000 .ERROR6 ANOP 06510000 IHBERMAC 1010,NAME,TAB/NOCHAR 06520000 MEXIT 06530000 MEND 06550000