home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
snobol
/
macros.360
< prev
next >
Wrap
Text File
|
1988-10-19
|
57KB
|
2,037 lines
./ ADD NAME=AAAA,LEVEL=01,SOURCE=0
e33.26 macros (February 4, 1971)
./ ADD NAME=ACOMP,LEVEL=01,SOURCE=0
MACRO
&LOC ACOMP &CL1,&CL2,&LOC1,&LOC2,&LOC3
&LOC L 1,&CL1
C 1,&CL2
AIF ('&LOC1' NE '&LOC2').NOT12
AIF ('&LOC1' NE '').K1
BL &LOC3
MEXIT
.K1 BNL &LOC1
AIF ('&LOC3' EQ '').DONE
BL &LOC3
MEXIT
.NOT12 AIF ('&LOC2' NE '&LOC3').NOT23
AIF ('&LOC2' NE '').K2
BH &LOC1
MEXIT
.K2 BNH &LOC2
AIF ('&LOC1' EQ '').DONE
BH &LOC1
MEXIT
.NOT23 AIF ('&LOC1' NE '&LOC3').NOT13
AIF ('&LOC3' NE '').K3
BE &LOC2
MEXIT
.K3 BNE &LOC1
AIF ('&LOC2' EQ '').DONE
BE &LOC2
MEXIT
.NOT13 AIF ('&LOC1' EQ '').N1
BH &LOC1
.N1 AIF ('&LOC2' EQ '').N2
BE &LOC2
.N2 AIF ('&LOC3' EQ '').DONE
BL &LOC3
.DONE MEND ACOMP
./ ADD NAME=ACOMPC,LEVEL=01,SOURCE=0
MACRO
&LOC ACOMPC &CL,&N,&LOC1,&LOC2,&LOC3
AIF ('&N' NE '0').A
&LOC C 0,&CL
AGO .B
.A ANOP
&LOC LA 1,&N
C 1,&CL
.B ANOP
AIF ('&LOC1' NE '&LOC2').NOT12
AIF ('&LOC1' NE '').K1
BH &LOC3
MEXIT
.K1 BNH &LOC1
AIF ('&LOC3' EQ '').DONE
BH &LOC3
MEXIT
.NOT12 AIF ('&LOC2' NE '&LOC3').NOT23
AIF ('&LOC2' NE '').K2
BL &LOC1
MEXIT
.K2 BNL &LOC2
AIF ('&LOC1' EQ '').DONE
BL &LOC1
MEXIT
.NOT23 AIF ('&LOC1' NE '&LOC3').NOT13
AIF ('&LOC3' NE '').K3
BE &LOC2
MEXIT
.K3 BNE &LOC1
AIF ('&LOC2' EQ '').DONE
BE &LOC2
MEXIT
.NOT13 AIF ('&LOC1' EQ '').N1
BL &LOC1
.N1 AIF ('&LOC2' EQ '').N2
BE &LOC2
.N2 AIF ('&LOC3' EQ '').DONE
BH &LOC3
.DONE MEND ACOMPC
./ ADD NAME=ADDI,LEVEL=01,SOURCE=0
MACRO
&LOC ADDI &CL1,&CL2,&CL3,&FLOC,&SLOC
AIF ('&CL1' EQ '&CL2').K
&LOC LM 1,2,&CL2
A 1,&CL3
STM 1,2,&CL1
AGO .L
.K ANOP
&LOC L 1,&CL2
A 1,&CL3
ST 1,&CL1
.L ANOP
AIF (T'&FLOC EQ 'O').A
BO &FLOC
.A AIF (T'&SLOC EQ 'O').B
BNO &SLOC
.B MEND ADDI
./ ADD NAME=ADDLG,LEVEL=01,SOURCE=0
MACRO
&LOC ADDLG &SP,&CL
&LOC L 1,&SP
A 1,&CL
ST 1,&SP
MEND ADDLG
./ ADD NAME=ADDR,LEVEL=01,SOURCE=0
MACRO
&LOC ADDR &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LD 2,&CL2
AE 2,&CL3
STD 2,&CL1
AIF (T'&SLOC EQ 'O').M
B &SLOC
.M MEND ADDR
./ ADD NAME=ADDSIB,LEVEL=01,SOURCE=0
MACRO
&LOC ADDSIB &ND1,&ND2
&LOC L 1,&ND1
LM 2,3,&ND2
L 5,FATHER(1)
L 4,CODE+4(5)
LA 4,1(4)
STH 4,CODE+6(5)
LM 5,6,FATHER(1)
STM 5,6,FATHER(2)
LM 5,6,RSIB(1)
STM 5,6,RSIB(2)
STM 2,3,RSIB(1)
MEND ADDSIB
./ ADD NAME=ADDSON,LEVEL=01,SOURCE=0
MACRO
&LOC ADDSON &ND1,&ND2
&LOC LM 1,2,&ND1
L 4,CODE+4(1)
LA 4,1(4)
STH 4,CODE+6(1)
LM 4,5,&ND2
STM 1,2,FATHER(4)
LM 2,3,LSON(1)
STM 2,3,RSIB(4)
STM 4,5,LSON(1)
MEND ADDSON
./ ADD NAME=ADJUST,LEVEL=01,SOURCE=0
MACRO
&LOC ADJUST &PTR,&CL,&OFFSET
&LOC L 1,&CL
L 1,0(1)
A 1,&OFFSET
ST 1,&PTR
MEND ADJUST
./ ADD NAME=AEQL,LEVEL=01,SOURCE=0
MACRO
&LOC AEQL &CL1,&CL2,&LOC1,&LOC2
&LOC L 1,&CL1
C 1,&CL2
AIF (T'&LOC1 EQ 'O').A
BNE &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B MEND AEQL
./ ADD NAME=AEQLC,LEVEL=01,SOURCE=0
MACRO
&LOC AEQLC &CL1,&N,&LOC1,&LOC2
AIF ('&N' EQ '0').C
&LOC LA 6,&N
C 6,&CL1
AGO .D
.C ANOP
&LOC C 0,&CL1
.D AIF (T'&LOC1 EQ 'O').A
BNE &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B MEND AEQLC
./ ADD NAME=AEQLIC,LEVEL=01,SOURCE=0
MACRO
&LOC AEQLIC &CL1,&CL2,&N,&FLOC,&SLOC
&LOC L 1,&CL1
AIF ('&N' EQ '0').A
LA 6,&N
C 6,&CL2.(1)
AGO .B
.A C 0,&CL2.(1)
.B AIF (T'&FLOC EQ 'O').C
BNE &FLOC
.C AIF (T'&SLOC EQ 'O').M
BE &SLOC
.M MEND AEQLIC
./ ADD NAME=AFIELD,LEVEL=01,SOURCE=0
MACRO
&LOC AFIELD &A
&LOC DESCR &A,0,0
MEND AFIELD
./ ADD NAME=APDSP,LEVEL=01,SOURCE=0
MACRO
&LOC APDSP &SP1,&SP2
&LOC L 15,=A(APDSP)
LA 2,&SP1
LM 3,5,&SP2
BALR 14,15
MEND APDSP
./ ADD NAME=ARRAY,LEVEL=01,SOURCE=0
MACRO
&LOC ARRAY &N
DS 0D
&LOC DC (2*&N)F'0'
MEND ARRAY
./ ADD NAME=BKSIZE,LEVEL=01,SOURCE=0
MACRO
&LOC BKSIZE &CL,&PTR
&LOC L 1,&PTR
L 15,4(1)
LA 15,0(15)
TM 4(1),STTL
BNO A&SYSNDX
LA 15,7+BCDFLD-8(15)
SRL 15,3
SLA 15,3
A&SYSNDX AR 15,8
STM 15,0,&CL
.M MEND BKSIZE
./ ADD NAME=BKSPCE,LEVEL=01,SOURCE=0
MACRO
&LOC BKSPCE &UNIT
&LOC L 15,=A(IBCOM#)
CNOP 0,4
BAL 14,40(15)
DC X'01',AL3(&UNIT)
MEND BKSPCE
./ ADD NAME=BRANCH,LEVEL=01,SOURCE=0
MACRO
&LOC1 BRANCH &LOC2,&LOC3
AIF (T'&LOC3 NE 'O').A
&LOC1 B &LOC2
MEXIT
.A ANOP
&LOC1 L 11,=A(&LOC2)
BR 11
MEND BRANCH
./ ADD NAME=BRANIC,LEVEL=01,SOURCE=0
MACRO
&LOC BRANIC &CL,&N
&LOC L 15,&CL
L 11,&N.(15)
BR 11
MEND BRANIC
./ ADD NAME=BUFFER,LEVEL=01,SOURCE=0
MACRO
&LOC BUFFER &N
&LOC DC (&N)C' '
MEND BUFFER
./ ADD NAME=CHECK,LEVEL=01,SOURCE=0
MACRO
&LOC CHECK &FLOC,&SLOC
&LOC C 12,=A(STACK-12*8+STSIZE*8)
BH &FLOC
MEND CHECK
./ ADD NAME=CHKVAL,LEVEL=01,SOURCE=0
MACRO
&LOC CHKVAL &CL1,&CL2,&SP,&LOC1,&LOC2,&LOC3
&LOC L 6,&SP
A 6,&CL2
C 6,&CL1
AIF (T'&LOC1 EQ 'O').A
BH &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B AIF (T'&LOC3 EQ 'O').C
BL &LOC3
.C MEND CHKVAL
./ ADD NAME=CLERTB,LEVEL=01,SOURCE=0
MACRO
&LOC CLERTB &TB,&CHAR
AIF ('&CHAR' EQ 'CONTIN').A
AIF ('&CHAR' EQ 'STOP').B
AIF ('&CHAR' EQ 'STOPSH').C
&LOC L 1,HEX0C4
AGO .D
.A ANOP
&LOC LR 1,0
AGO .D
.B ANOP
&LOC L 1,HEX044
AGO .D
.C ANOP
&LOC L 1,HEX084
.D L 3,=A(&TB)
LR 5,0
LA 6,4
LA 7,252
A&SYSNDX ST 1,0(3,5)
BXLE 5,6,A&SYSNDX
MEND CLERTB
./ ADD NAME=CPYPAT,LEVEL=01,SOURCE=0
MACRO
&LOC CPYPAT &CL1,&CL2,&CL3,&CL4,&CL5,&CL6
&LOC L 15,=A(COPL)
LA 2,&CL1
L 3,&CL2
L 4,&CL3
L 5,&CL4
L 6,&CL5
L 7,&CL6
BALR 14,15
MEND CPYPAT
./ ADD NAME=DATE,LEVEL=01,SOURCE=0
MACRO
&LOC DATE &SP
&LOC STM 13,1,AISAVE
LA 13,SAVESAVE
TIME TU
ST 1,PACKEDDT+4
LM 13,1,AISAVE
CVB 7,PACKEDDT
ST 7,INTEDAT
SR 6,6
D 6,ONETHOU
ST 7,YEAR
MVC LYD(1),YEAR+3
NI LYD,X'03'
LA 3,SYTABLE
BC 7,DETMONTH
LA 3,LYTABLE
DETMONTH M 6,ONETHOU
S 7,INTEDAT
LPR 7,7
LR 2,7
D 6,THIRTY
LR 4,7
M 6,TWO
S 3,TWO
CH 2,0(7,3)
BC 2,INCRMONT
S 3,TWO
B COMPDAY
INCRMONT A 4,ONE
COMPDAY SH 2,0(7,3)
CVD 4,PRESULT
UNPK ZRESULT(2),PRESULT(8)
OI ZRESULT+1,C'0'
MVC DBUF(2),ZRESULT
CVD 2,PRESULT
UNPK ZRESULT(2),PRESULT(8)
OI ZRESULT+1,C'0'
MVC DBUF+3(2),ZRESULT
L 5,YEAR
CVD 5,PRESULT
UNPK ZRESULT(2),PRESULT(8)
OI ZRESULT+1,C'0'
MVC DBUF+6(2),ZRESULT
LA 2,8
LA 3,0
LA 4,DBUF
LA 5,0
STM 2,5,&SP
MEND DATE
./ ADD NAME=DECRC,LEVEL=01,SOURCE=0
MACRO
&LOC DECRC &CL,&N
&LOC L 1,&CL
AIF ('&N' EQ '1').A
AIF ('&N' EQ 'DWDTH').C
AIF ('&N' EQ '2*DWDTH').D
AIF ('&N' EQ 'SWDTH').D
S 1,=A(&N)
AGO .B
.A BCTR 1,0
AGO .B
.C SR 1,8
AGO .B
.D SR 1,8
SR 1,8
.B ANOP
ST 1,&CL
MEND DECRC
./ ADD NAME=DEQL,LEVEL=01,SOURCE=0
MACRO
&LOC DEQL &CL1,&CL2,&LOC1,&LOC2
&LOC CLC &CL1.(8),&CL2
AIF (T'&LOC1 EQ 'O').A
BNE &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B MEND DEQL
./ ADD NAME=DESCR,LEVEL=01,SOURCE=0
MACRO
&LOC DESCR &A,&F,&V
CNOP 0,8
&LOC DC A(&A)
DC AL1(&F)
DC AL1(0)
DC AL2(&V)
MEND DESCR
./ ADD NAME=DIVC,LEVEL=01,SOURCE=0
MACRO
&LOC DIVC &CL1,&CL2,&N
AIF ('&N' EQ '2*DWDTH').A
L 14,&CL2
SRDA 14,32
LA 1,&N
DR 14,1
STM 15,0,&CL1
MEXIT
.A L 15,&CL2
SLA 15,3
STM 15,0,&CL1
MEND DIVC
./ ADD NAME=DIVI,LEVEL=01,SOURCE=0
MACRO
&LOC DIVI &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LM 3,4,&CL3
CR 3,0
AIF (T'&FLOC NE 'O').A
BE A&SYSNDX
AGO .B
.A BE &FLOC
.B L 2,&CL2
SRDA 2,32
D 2,&CL3
STM 3,4,&CL1
AIF (T'&SLOC EQ 'O').M
B &SLOC
.M ANOP
A&SYSNDX EQU *
MEND DIVI
./ ADD NAME=DIVR,LEVEL=01,SOURCE=0
MACRO
&LOC DIVR &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LE 4,&CL3
CE 4,ZEROCL
AIF (T'&FLOC NE 'O').A
BE A&SYSNDX
AGO .B
.A BE &FLOC
.B LD 2,&CL2
DER 2,4
STD 2,&CL1
AIF (T'&SLOC NE 'O').C
AGO .D
.C B &SLOC
.D AIF (T'&FLOC NE 'O').M
A&SYSNDX EQU *
.M MEND DIVR
./ ADD NAME=ENDEX,LEVEL=01,SOURCE=0
MACRO
&LOC ENDEX &CL
&LOC L 1,=A(SPIECUTF)
C 0,0(1)
BE U&SYSNDX
LA 1,16
ST 1,RETCOD
U&SYSNDX C 0,&CL
BE V&SYSNDX
NC &CL.(4),=F'4095'
MVC A&SYSNDX+1(2),&CL+2
CNOP 0,4
B *+8
DC AL1(128)
A&SYSNDX DC AL3(0)
L 1,*-4
SVC 13
V&SYSNDX L 15,=A(FINIS)
BR 15
MEND ENDEX
./ ADD NAME=ENFILE,LEVEL=01,SOURCE=0
MACRO
&LOC ENFILE &UNIT
&LOC L 15,=A(IBCOM#)
CNOP 0,4
BAL 14,48(15)
DC X'01',AL3(&UNIT)
MEND ENFILE
./ ADD NAME=EXPI,LEVEL=01,SOURCE=0
MACRO
&LOC EXPI &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC C 0,&CL2
BNE A&SYSNDX
C 0,&CL3
AIF (T'&FLOC NE 'O').A
BNL F&SYSNDX
AGO .B
.A BNL &FLOC
.B ANOP
Z&SYSNDX LR 3,0
B R&SYSNDX
A&SYSNDX C 0,&CL3
BNE B&SYSNDX
LA 3,1
B R&SYSNDX
B&SYSNDX BL C&SYSNDX
L 3,&CL2
LPR 3,3
C 3,=F'1'
BNE Z&SYSNDX
L 3,&CL2
B D&SYSNDX
C&SYSNDX LA 3,1
D&SYSNDX L 4,&CL3
LPR 4,4
E&SYSNDX LR 2,3
M 2,&CL2
SLDA 2,32
AIF (T'&FLOC EQ 'O').C
BO &FLOC
AGO .D
.C BO F&SYSNDX
.D SRDA 2,32
BCT 4,E&SYSNDX
R&SYSNDX L 4,&CL2+4
STM 3,4,&CL1
AIF (T'&SLOC EQ 'O').M
B &SLOC
F&SYSNDX EQU *
.M MEND EXPI
./ ADD NAME=EXPR,LEVEL=01,SOURCE=0
MACRO
&LOC EXPR &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LE 0,&CL2
LE 2,&CL3
L 15,=A(EXREAL)
BALR 14,15
AIF (T'&FLOC EQ 'O').A
B &FLOC
AGO .B
.A B A&SYSNDX
.B STE 0,&CL1
L 2,&CL2+4
ST 2,&CL1+4
AIF (T'&SLOC EQ 'O').C
B &SLOC
.C ANOP
A&SYSNDX EQU *
MEND EXPR
./ ADD NAME=FSHRTN,LEVEL=01,SOURCE=0
MACRO
&LOC FSHRTN &SP,&N
&LOC LM 1,2,&SP
AIF ('&N' EQ '1').A
S 1,=F'&N'
AGO .B
.A BCTR 1,0
.B ANOP
LA 2,&N.(2)
STM 1,2,&SP
MEND FSHRTN
./ ADD NAME=GETA,LEVEL=01,SOURCE=0
MACRO
&LOC GETA &CL1,&CL2,&CL3
&LOC L 1,&CL3
L 2,&CL2
L 1,0(1,2)
ST 1,&CL1
MEND GETA
./ ADD NAME=GETAC,LEVEL=01,SOURCE=0
MACRO
&LOC GETAC &CL1,&CL2,&N
&LOC L 1,&CL2
AIF ('&N' EQ '-2*DWDTH').A
L 1,&N.(1)
ST 1,&CL1
MEXIT
.A SR 1,8
SR 1,8
L 1,0(1)
ST 1,&CL1
MEND GETAC
./ ADD NAME=GETBAL,LEVEL=01,SOURCE=0
MACRO
&LOC GETBAL &TXSP,&LEN,&FLOC,&SLOC
&LOC LA 1,&TXSP
L 3,&LEN
L 4,0(1)
LR 5,4
A 5,4(1)
A 5,8(1)
LA 4,1(4)
CLI 0(5),C')'
BE &FLOC
CLI 0(5),C'('
BNE GBALS
LA 6,1
GBAL1 BCT 3,GBAL2
B &FLOC
GBAL2 LA 4,1(4)
LA 5,1(5)
CLI 0(5),C')'
BE GBAL3
CLI 0(5),C'('
BNE GBAL1
LA 6,1(6)
B GBAL1
GBAL3 BCT 6,GBAL1
GBALS ST 4,0(1)
.B AIF (T'&SLOC EQ 'O').C
B &SLOC
.C MEND GETBAL
./ ADD NAME=GETD,LEVEL=01,SOURCE=0
MACRO
&LOC GETD &CL1,&CL2,&OFFSET
&LOC L 1,&OFFSET
L 2,&CL2
LD 0,0(1,2)
STD 0,&CL1
MEND GETD
./ ADD NAME=GETDC,LEVEL=01,SOURCE=0
MACRO
&LOC GETDC &CL1,&CL2,&N
&LOC L 1,&CL2
LD 0,&N.(1)
STD 0,&CL1
MEND GETDC
./ ADD NAME=GETLG,LEVEL=01,SOURCE=0
MACRO
&LOC GETLG &CL,&SP
&LOC L 15,&SP
STM 15,0,&CL
MEND GETLG
./ ADD NAME=GETLTH,LEVEL=01,SOURCE=0
MACRO
&LOC GETLTH &CL,&CL2
&LOC L 15,&CL2
LA 15,7+BCDFLD-8(15)
SRL 15,3
SLA 15,3
STM 15,0,&CL
MEND GETLTH
./ ADD NAME=GETSIZ,LEVEL=01,SOURCE=0
MACRO
&LOC GETSIZ &CL,&PTR
&LOC L 15,&PTR
L 15,4(15)
LA 15,0(15)
STM 15,0,&CL
MEND GETSIZ
./ ADD NAME=GETSPC,LEVEL=01,SOURCE=0
MACRO
&LOC GETSPC &SP,&CL,&N
&LOC L 1,&CL
LM 1,4,&N.(1)
STM 1,4,&SP
MEND GETSPC
./ ADD NAME=INCRC,LEVEL=01,SOURCE=0
MACRO
&LOC INCRC &CL,&N
&LOC L 1,&CL
AIF ('&N' EQ 'DWDTH').A
LA 1,&N.(1)
AGO .C
.A AR 1,8
AGO .C
.C ANOP
ST 1,&CL
MEND INCRC
./ ADD NAME=INCRL,LEVEL=01,SOURCE=0
MACRO
&LOC INCRL &SP,&L
&LOC INCRC &SP,&L
MEND INCRL
./ ADD NAME=INCRV,LEVEL=01,SOURCE=0
MACRO
&LOC INCRV &PTR,&N
&LOC L 6,&PTR+4
LA 6,&N.(6)
STH 6,&PTR+6
MEND INCRV
./ ADD NAME=INIT,LEVEL=01,SOURCE=0
MACRO
&LOC INIT
USING *,15
SAVE (14,12),,SNOBOL4
BALR 11,0
USING *,11
&LOC B W&SYSNDX+8
W&SYSNDX DC A(COMMON,COMMON+4096)
LM 9,10,W&SYSNDX
USING COMMON,9,10
ST 13,SAVE13
LA 4,SAVESAVE
ST 13,4(4)
ST 4,8(13)
L 15,=A(IBCOM#)
BAL 14,64(15)
LR 2,1
L 2,0(2)
LH 3,0(2)
LA 2,2(2)
SR 0,0
CR 0,3
BE GET
AR 3,2
KEY CLI 0(2),C'L'
BE LOW
CLI 0(2),C'H'
BE HIGH
CLI 0(2),C'R'
BNE GET
BAL 8,CONVERT
ST 5,RESERVE
B DTEST
LOW BAL 8,CONVERT
ST 5,MEMREQ
B DTEST
HIGH BAL 8,CONVERT
ST 5,MEMTOP
DTEST CLI DONE,C'D'
BNE KEY
GET L 2,RESERVE
L 3,MEMREQ
AR 3,2
ST 3,MEMREQ
L 3,MEMTOP
AR 3,2
ST 3,MEMTOP
LA 13,SAVESAVE
GETMAIN VU,LA=MEMREQ,A=MEMGIV
LM 1,2,MEMGIV
L 3,RESERVE
SR 2,3
STM 1,2,MEMREQ
AR 2,1
STM 2,3,MEMGIV
FREEMAIN V,A=MEMGIV
L 2,MEMREQ
ST 2,HDSGPT
ST 2,FRSGPT
A 2,MEMTOP
ST 2,TLSGPT
B A&SYSNDX
CONVERT CLI 1(2),C'='
BNE GET
LA 2,2(2)
CR 2,3
BNL GET
SR 5,5
CLOOP CLI 0(2),C'0'
BL GET
CLI 0(2),C'9'
BH GET
MVC CHOR(1),0(2)
NI CHOR,X'0F'
M 4,=F'10'
A 5,DOGIT
LA 2,1(2)
CR 2,3
BL MORE
MVI DONE,C'D'
BR 8
MORE CLI 0(2),C','
BNE CLOOP
LA 2,1(2)
BR 8
A&SYSNDX EQU *
LA 13,SAVESAVE
SPIE SPIECUT,((1,15))
L 3,SIGRESET
SPM 3
STIMER TASK,TUINTVL=MAXTIM
LA 0,0
LA 8,8
MEND INIT
./ ADD NAME=INSERT,LEVEL=01,SOURCE=0
MACRO
&LOC INSERT &ND1,&ND2
&LOC LM 1,2,&ND1
LM 3,4,FATHER(1)
LM 3,4,LSON(3)
LM 5,6,&ND2
L 7,CODE+4(5)
LA 7,1(7)
STH 7,CODE+6(5)
STM 5,6,RSIB(3)
LM 3,4,FATHER(1)
STM 3,4,FATHER(5)
STM 5,6,FATHER(1)
STM 1,2,LSON(5)
MEND INSERT
./ ADD NAME=INTRL,LEVEL=01,SOURCE=0
MACRO
&LOC INTRL &CL1,&CL2
&LOC L 2,&CL2
AL 2,BIG2+4
ST 2,REALBB+4
LD 2,REALBB
SD 2,BIG2
STE 2,&CL1
LA 2,R
ST 2,&CL1+4
MEND INTRL
./ ADD NAME=INTSPC,LEVEL=01,SOURCE=0
MACRO
&LOC INTSPC &SP,&CL
&LOC L 15,=A(BDSPEC)
LA 1,&SP
LA 2,&CL
BALR 14,15
MEND INTSPC
./ ADD NAME=ISTACK,LEVEL=01,SOURCE=0
MACRO
&LOC ISTACK
&LOC L 12,=A(STACK-12*8)
LR 13,0
MEND ISTACK
./ ADD NAME=LCOMP,LEVEL=01,SOURCE=0
MACRO
&LOC LCOMP &SP1,&SP2,&LOC1,&LOC2,&LOC3
&LOC ACOMP &SP1,&SP2,&LOC1,&LOC2,&LOC3
.DONE MEND LCOMP
./ ADD NAME=LEQLC,LEVEL=01,SOURCE=0
MACRO
&LOC LEQLC &CL1,&N,&LOC1,&LOC2
&LOC AEQLC &CL1,&N,&LOC1,&LOC2
.B MEND LEQLC
./ ADD NAME=LEXCMP,LEVEL=01,SOURCE=0
MACRO
&LOC LEXCMP &SP1,&SP2,&GLOC,&ELOC,&LLOC
&LOC LM 2,4,&SP1
LM 5,7,&SP2
AIF ('&GLOC' EQ '&LLOC').S
L 15,=A(COMPLG)
BALR 14,15
AIF (T'&GLOC EQ 'O').A
B &GLOC
AIF (T'&ELOC EQ 'O').B
B &ELOC
AIF (T'&LLOC EQ 'O').M
B &LLOC
MEXIT
.A AIF (T'&LLOC NE 'O').D
B *+8
AGO .E
.D B *+12
.E AIF (T'&ELOC EQ 'O').F
B &ELOC
AGO .G
.F B *+8
.G AIF (T'&LLOC EQ 'O').M
B &LLOC
MEXIT
.B AIF (T'&LLOC EQ 'O').H
B *+8
B &LLOC
MEXIT
.H B *+4
MEXIT
.S CR 2,5
AIF (T'&LLOC EQ 'O').CS
BNE &LLOC
AGO .DS
.CS BNE A&SYSNDX
.DS L 15,=A(SPECEQ)
BALR 14,15
AIF (T'&LLOC EQ 'O').AS
B &LLOC
AGO .BS
.AS B *+8
.BS AIF (T'&ELOC EQ 'O').M
B &ELOC
A&SYSNDX EQU *
.M MEND LEXCMP
./ ADD NAME=LHERE,LEVEL=01,SOURCE=0
MACRO
&LOC LHERE
CNOP 0,4
&LOC EQU *
MEND LHERE
./ ADD NAME=LINK,LEVEL=01,SOURCE=0
MACRO
&LOC LINK &CL1,&CL2,&CL3,&CL4,&FLOC,&SLOC
&LOC L 1,&CL2
L 2,&CL3
LA 3,&CL1
L 4,&CL4
L 15,=A(LINKER)
BALR 14,15
AIF (T'&FLOC EQ 'O').A
B &FLOC
AGO .B
.A B A&SYSNDX
.B AIF (T'&SLOC EQ 'O').C
B &SLOC
.C ANOP
A&SYSNDX EQU *
MEND LINK
./ ADD NAME=LINKOR,LEVEL=01,SOURCE=0
MACRO
&LOC LINKOR &NPTR,&LPTR
&LOC L 1,&NPTR
LR 2,1
L&SYSNDX L 3,16(2)
CR 3,0
BE I&SYSNDX
AR 3,1
LR 2,3
B L&SYSNDX
I&SYSNDX L 1,&LPTR
ST 1,16(2)
MEND LINKOR
./ ADD NAME=LOAD,LEVEL=01,SOURCE=0
MACRO
&LOC LOAD &CL1,&SP1,&SP2
&LOC L 15,=A(LOADER)
LA 1,&SP1
LA 2,&SP2
BALR 14,15
ST 2,&CL1
ST 0,&CL1+4
MEND LOAD
./ ADD NAME=LOCAPT,LEVEL=01,SOURCE=0
MACRO
&LOC LOCAPT &PTR1,&PTR2,&CL,&FLOC,&SLOC
LCLA &M
&LOC L 15,&PTR2
AIF (T'&FLOC EQ 'O').A
&M SETA &M+1
.A L 5,4(15)
LA 5,0(5,15)
LR 4,8
SR 5,4
AR 4,8
C&SYSNDX CLC 8(8,15),&CL
BE D&SYSNDX
BXLE 15,4,C&SYSNDX
AIF (&M EQ 0).C
B &FLOC
AGO .D
.C B A&SYSNDX
.D ANOP
D&SYSNDX STM 15,0,&PTR1
AIF (T'&SLOC EQ 'O').M
B &SLOC
AIF (&M NE 0).M
A&SYSNDX EQU *
.M MEND LOCAPT
./ ADD NAME=LOCAPV,LEVEL=01,SOURCE=0
MACRO
&LOC LOCAPV &PTR1,&PTR2,&CL,&FLOC,&SLOC
LCLA &M
&LOC L 15,&PTR2
AIF (T'&FLOC EQ 'O').A
&M SETA &M+1
.A L 5,4(15)
LA 5,0(5,15)
LR 4,8
SR 5,4
AR 4,8
C&SYSNDX CLC 16(8,15),&CL
BE D&SYSNDX
BXLE 15,4,C&SYSNDX
AIF (&M EQ 0).C
B &FLOC
AGO .D
.C B A&SYSNDX
.D ANOP
D&SYSNDX STM 15,0,&PTR1
AIF (T'&SLOC EQ 'O').M
B &SLOC
AIF (&M NE 0).M
A&SYSNDX EQU *
.M MEND LOCAPV
./ ADD NAME=LOCSP,LEVEL=01,SOURCE=0
MACRO
&LOC LOCSP &SP,&PTR
&LOC LM 3,4,&PTR
CR 0,3
BNE B&SYSNDX
ST 0,&SP
B A&SYSNDX
B&SYSNDX L 1,4(3)
LA 1,0(1)
LA 2,BCDFLD
STM 1,4,&SP
A&SYSNDX EQU *
MEND LOCSP
./ ADD NAME=LVALUE,LEVEL=01,SOURCE=0
MACRO
&LOC LVALUE &RETVAL,&NODPTR
&LOC L 15,=A(LVAL)
LA 1,&RETVAL
L 2,&NODPTR
BALR 14,15
MEND LVALUE
./ ADD NAME=MAKNOD,LEVEL=01,SOURCE=0
MACRO
&LOC MAKNOD &PTR,&BLK,&VAL,&OR,&PROC,&ARGL
&LOC LM 1,2,&BLK
LM 3,4,&PROC
L 5,&OR
LR 6,0
L 7,&VAL
STM 3,7,8(1)
AIF (T'&ARGL EQ 'O').C
LM 3,4,&ARGL
STM 3,4,4*8(1)
.C STM 1,2,&PTR
MEND MAKNOD
./ ADD NAME=MDATA,LEVEL=01,SOURCE=0
DS 0F
MAXTIM DC X'7FFFFFFF'
SIGRESET DC X'36000000'
HEX0C4 DC X'0C0C0C0C'
HEX044 DC X'04040404'
HEX084 DC X'08080808'
HEX04 DC X'00000004'
HEX08 DC X'00000008'
HEX0C DC X'0000000C'
AISAVE DC 5F'0'
DS 0D
PACKEDDT DC PL8'0'
PRESULT DC PL8'0'
INTEDAT DC F'0'
ONE DC F'1'
TWO DC F'2'
THIRTY DC F'30'
ONETHOU DC F'1000'
YEAR DC F'0'
DC H'0'
SYTABLE DC H'31,59,90,120,151,181,212,243,273,304,334,365'
DC H'0'
LYTABLE DC H'31,60,91,121,151,182,213,244,274,305,335,366'
LYD DC X'00'
ZRESULT DC CL2' '
DBUF DC C' / / '
DS 0D
REALB DC X'4E00000000000000'
REALBB DC X'4E00000000000000'
BIG2 DC X'4E00000080000000'
BIGZIP DC X'4E00000000000000'
MAXINT DC X'487FFFFFFF000000'
TRTBL DC 256C' '
STRING CSECT
ALPHA DC X'000102030405060708090A0B0C0D0E0F'
DC X'101112131415161718191A1B1C1D1E1F'
DC X'202122232425262728292A2B2C2D2E2F'
DC X'303132333435363738393A3B3C3D3E3F'
DC X'404142434445464748494A4B4C4D4E4F'
DC X'505152535455565758595A5B5C5D5E5F'
DC X'606162636465666768696A6B6C6D6E6F'
DC X'707172737475767778797A7B7C7D7E7F'
DC X'808182838485868788898A8B8C8D8E8F'
DC X'909192939495969798999A9B9C9D9E9F'
DC X'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'
DC X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
DC X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'
DC X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'
DC X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'
DC X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
ALPHAR DC X'FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0'
DC X'EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0'
DC X'DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0'
DC X'CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0'
DC X'BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0'
DC X'AFAEADACABAAA9A8A7A6A5A4A3A2A1A0'
DC X'9F9E9D9C9B9A99989796959493929190'
DC X'8F8E8D8C8B8A89888786858483828180'
DC X'7F7E7D7C7B7A79787776757473727170'
DC X'6F6E6D6C6B6A69686766656463626160'
DC X'5F5E5D5C5B5A59585756555453525150'
DC X'4F4E4D4C4B4A49484746454443424140'
DC X'3F3E3D3C3B3A39383736353433323130'
DC X'2F2E2D2C2B2A29282726252423222120'
DC X'1F1E1D1C1B1A19181716151413121110'
DC X'0F0E0D0C0B0A09080706050403020100'
AMPST DC C'&&'
QTSTR DC C''''
S4 CSECT
SAVESAVE DC 18F'0'
SAVE13 DC F'0'
MEMREQ DC A(MEMMIN*DWDTH)
MEMTOP DC A(MEMMAX*DWDTH)
MEMGIV DC A(0)
MEMLEN DC A(0)
RESERVE DC A(MEMLEV)
DOGIT DC F'0'
CHOR EQU DOGIT+3
DONE DC C' '
LTORG
./ ADD NAME=MLINK,LEVEL=01,SOURCE=0
S4 CSECT
ENTRY ADDFN
ENTRY AROWFN
ENTRY ATFN
ENTRY BARFN
ENTRY BIAMFN
ENTRY BIATFN
ENTRY BINGFN
ENTRY BIPDFN
ENTRY BIPRFN
ENTRY BIQSFN
ENTRY COMMON
ENTRY DATA
ENTRY DIVFN
ENTRY DOLFN
ENTRY DOTFN
ENTRY EXPFN
EXTRN EXREAL
ENTRY INDFN
ENTRY INTR10
ENTRY KEYFN
ENTRY MNSFN
ENTRY MPYFN
ENTRY NAMFN
ENTRY NEGFN
ENTRY OBLIST
ENTRY ORFN
ENTRY PDFN
ENTRY PLSFN
ENTRY PRFN
ENTRY QUESFN
ENTRY RETCOD
ENTRY SAVESAVE
ENTRY SAVE13
ENTRY SLHFN
ENTRY STRFN
ENTRY STYPE
ENTRY SUBFN
ENTRY SYSCUT
EXTRN APDSP
EXTRN BDSPEC
EXTRN BIOPTB
EXTRN CARDTB
EXTRN COMPLG
EXTRN COPL
EXTRN DECBIN
EXTRN ELEMTB
EXTRN EOSTB
EXTRN FINIS
EXTRN FRWDTB
EXTRN GOTOTB
EXTRN IBCOM#
EXTRN IBLKTB
EXTRN LVAL
EXTRN LBLTB
EXTRN LBLXTB
EXTRN LINKER
EXTRN LOADER
EXTRN MOVTST
EXTRN NUMBTB
EXTRN REALST
EXTRN SNABTB
EXTRN SPECEQ
EXTRN SPIECUT
EXTRN SPIECUTF
EXTRN SPREAL
EXTRN STPRNT
EXTRN STREAD
EXTRN STREAM
EXTRN UNLOADER
EXTRN UNOPTB
EXTRN VARATB
./ ADD NAME=MNREAL,LEVEL=01,SOURCE=0
MACRO
&LOC MNREAL &CL1,&CL2
&LOC LD 2,&CL2
LCER 2,2
STD 2,&CL1
MEND MNREAL
./ ADD NAME=MNSINT,LEVEL=01,SOURCE=0
MACRO
&LOC MNSINT &CL1,&CL2,&FLOC,&SLOC
&LOC LM 2,3,&CL2
LCR 2,2
BO &FLOC
STM 2,3,&CL1
B &SLOC
MEND MNSINT
./ ADD NAME=MOVA,LEVEL=01,SOURCE=0
MACRO
&LOC MOVA &CL1,&CL2
&LOC L 1,&CL2
ST 1,&CL1
MEND MOVA
./ ADD NAME=MOVAV,LEVEL=01,SOURCE=0
MACRO
&LOC MOVAV &CL1,&CL2
&LOC L 15,&CL2+4
LA 15,0(15)
STM 15,0,&CL1
MEND MOVAV
./ ADD NAME=MOVBLK,LEVEL=01,SOURCE=0
MACRO
&LOC MOVBLK &PTR1,&PTR2,&CL
&LOC L 6,&PTR1
L 4,&PTR2
AR 4,8
AR 6,8
L 3,&CL
L 15,=A(MOVTST)
BALR 14,15
MEND MOVBLK
./ ADD NAME=MOVD,LEVEL=01,SOURCE=0
MACRO
&LOC MOVD &CL1,&CL2
&LOC LD 0,&CL2
STD 0,&CL1
MEND MOVD
./ ADD NAME=MOVV,LEVEL=01,SOURCE=0
MACRO
&LOC MOVV &CL1,&CL2
&LOC MVC &CL1+5(3),&CL2+5
MEND MOVV
./ ADD NAME=MOVVA,LEVEL=01,SOURCE=0
MACRO
&LOC MOVVA &CL1,&CL2
&LOC MVC &CL1+5(3),&CL2+1
MEND MOVVA
./ ADD NAME=MPYC,LEVEL=01,SOURCE=0
MACRO
&LOC MPYC &CL1,&CL2,&N
AIF ('&N' EQ 'DWDTH').A
&LOC LA 15,&N
AGO .B
.A ANOP
&LOC LR 15,8
.B ANOP
M 14,&CL2
STM 15,0,&CL1
MEND MPYC
./ ADD NAME=MPYI,LEVEL=01,SOURCE=0
MACRO
&LOC MPYI &CL1,&CL2,&CL3,&FLOC,&SLOC
AIF ('&CL1' EQ '&CL2').K
&LOC LM 3,4,&CL2
M 2,&CL3
STM 3,4,&CL1
AGO .L
.K ANOP
&LOC L 3,&CL2
M 2,&CL3
ST 3,&CL1
.L AIF (T'&FLOC EQ 'O').A
AGO .C
.A AIF (T'&SLOC EQ 'O').M
.C SLDA 2,32
AIF (T'&FLOC EQ 'O').D
BO &FLOC
AIF (T'&SLOC EQ 'O').M
B &SLOC
AGO .M
.D BNO &SLOC
.M MEND MPYI
./ ADD NAME=MPYR,LEVEL=01,SOURCE=0
MACRO
&LOC MPYR &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LE 2,&CL2
ME 2,&CL3
STE 2,&CL1
L 1,&CL2+4
ST 1,&CL1+4
AIF (T'&SLOC EQ 'O').M
B &SLOC
.M MEND MPYR
./ ADD NAME=MSTIME,LEVEL=01,SOURCE=0
MACRO
&LOC MSTIME &CL
&LOC STM 13,1,AISAVE
LA 13,SAVESAVE
TTIMER
L 3,MAXTIM
SR 3,0
M 2,=F'26'
D 2,=F'1000'
ST 3,&CL
LM 13,1,AISAVE
ST 0,&CL+4
MEND MSTIME
./ ADD NAME=PARMS,LEVEL=01,SOURCE=0
ALPHSZ EQU 256
FNC EQU B'00000100'
FNC@ EQU B'11111011'
MARK EQU B'00001000'
MARK@ EQU B'11110111'
PTR EQU B'00010000'
PTR@ EQU B'11101111'
STTL EQU B'00000010'
STTL@ EQU B'11111101'
TTL EQU B'00000001'
TTL@ EQU B'11111110'
AWDTH EQU 8
DWDTH EQU 8
SWDTH EQU 16
CPA EQU 1
MEMLEV EQU 10000
MEMMIN EQU 4400
MEMMAX EQU 25000
CARDSZ EQU 80
SEQSIZ EQU 8
STNOSZ EQU 8
OBSIZ EQU 256
SIZLIM EQU 16777215
UNITI EQU 5
UNITO EQU 6
UNITP EQU 7
./ ADD NAME=PLUGTB,LEVEL=01,SOURCE=0
MACRO
&LOC PLUGTB &TB,&CHAR,&SP
&LOC LM 1,2,&SP+4
AR 1,2
LR 3,0
L 4,=A(&TB)
LR 5,0
LA 6,1
L 7,&SP
SR 1,6
AIF ('&CHAR' EQ 'CONTIN').A
AIF ('&CHAR' EQ 'STOP').B
AIF ('&CHAR' EQ 'STOPSH').C
L 2,HEX0C
AGO .D
.A LR 2,0
AGO .D
.B L 2,HEX04
AGO .D
.C L 2,HEX08
.D ANOP
A&SYSNDX BXH 5,6,B&SYSNDX
IC 3,0(1,5)
STC 2,0(3,4)
B A&SYSNDX
B&SYSNDX EQU *
MEND PLUGTB
./ ADD NAME=POPA,LEVEL=01,SOURCE=0
MACRO
&LOC POPA &CL
&LOC POPD &CL
MEND POPA
./ ADD NAME=POPD,LEVEL=01,SOURCE=0
MACRO
&LOC POPD &CL
LCLA &NO,&N,&K
&NO SETA N'&CL
&K SETA &NO
AIF ('&LOC' EQ '').A
&LOC EQU *
.A AIF (&NO EQ 0).DONE
&N SETA &N+1
LD 0,13*8-&N*8(12)
STD 0,&CL(&N)
&NO SETA &NO-1
AGO .A
.DONE AIF (&K EQ 1).DONI
AIF (&K EQ 2).DONK
S 12,=A(&K*8)
MEXIT
.DONI SR 12,8
MEXIT
.DONK SR 12,8
SR 12,8
MEND POPD
./ ADD NAME=POPS,LEVEL=01,SOURCE=0
MACRO
&LOC POPS &SP
LCLA &N
AIF ('&LOC' EQ '').A
CNOP 0,4
&LOC EQU *
.A ANOP
&N SETA &N+1
LM 1,4,13*8-16*&N.(12)
STM 1,4,&SP(&N)
AIF (&N LT N'&SP).A
AIF (&N EQ 1).SR
S 12,=A(16*&N)
AGO .SRR
.SR SR 12,8
SR 12,8
.SRR ANOP
MEND POPS
./ ADD NAME=PROC,LEVEL=01,SOURCE=0
MACRO
&LOC PROC &ADD
AIF (T'&ADD EQ 'O').A
USING *,11
&LOC L 11,=A(&ADD)
USING &ADD,11
AGO .B
.A ANOP
USING *,11
&LOC EQU *
.B ANOP
MEND PROC
./ ADD NAME=PSTACK,LEVEL=01,SOURCE=0
MACRO
&LOC PSTACK &CL
&LOC LA 15,11*8(12)
STM 15,0,&CL
MEND PSTACK
./ ADD NAME=PUSHA,LEVEL=01,SOURCE=0
MACRO
&LOC PUSHA &CL
&LOC PUSHD &CL
MEND PUSHA
./ ADD NAME=PUSHD,LEVEL=01,SOURCE=0
MACRO
&LOC PUSHD &CL
LCLA &NO,&N,&K
&N SETA 1
&NO SETA N'&CL
&K SETA &NO
AIF ('&LOC' EQ '').A
&LOC EQU *
.A AIF (&NO EQ 0).DONE
LD 0,&CL(&N)
STD 0,12*8+8*&N.(12)
&NO SETA &NO-1
&N SETA &N+1
AGO .A
.DONE AIF (&K EQ 1).DONI
LA 12,8*&K.(12)
MEXIT
.DONI AR 12,8
MEND PUSHD
./ ADD NAME=PUSHS,LEVEL=01,SOURCE=0
MACRO
&LOC PUSHS &SP
LCLA &N
AIF (T'&LOC EQ 'O').A
CNOP 0,4
&LOC EQU *
.A ANOP
&N SETA &N+1
LM 1,4,&SP(&N)
STM 1,4,11*8+16*&N.(12)
AIF (&N LT N'&SP).A
AIF (&N EQ 1).AR
LA 12,16*&N.(12)
MEXIT
.AR LA 12,16(12)
MEND PUSHS
./ ADD NAME=PUTAC,LEVEL=01,SOURCE=0
MACRO
&LOC PUTAC &CL1,&N,&CL2
&LOC L 1,&CL1
AIF ('&CL2' EQ 'ZEROCL').A
L 2,&CL2
ST 2,&N.(1)
MEXIT
.A ST 0,&N.(1)
MEND PUTAC
./ ADD NAME=PUTD,LEVEL=01,SOURCE=0
MACRO
&LOC PUTD &CL1,&OFFSET,&CL2
&LOC L 1,&OFFSET
L 2,&CL1
LD 0,&CL2
STD 0,0(1,2)
MEND PUTD
./ ADD NAME=PUTDC,LEVEL=01,SOURCE=0
MACRO
&LOC PUTDC &CL1,&N,&CL2
&LOC L 1,&CL1
LD 0,&CL2
STD 0,&N.(1)
MEND PUTDC
./ ADD NAME=PUTLG,LEVEL=01,SOURCE=0
MACRO
&LOC PUTLG &SP,&CL2
&LOC L 1,&CL2
ST 1,&SP
MEND PUTLG
./ ADD NAME=PUTSPC,LEVEL=01,SOURCE=0
MACRO
&LOC PUTSPC &CL,&N,&SP
&LOC L 1,&CL
LM 2,5,&SP
STM 2,5,&N.(1)
MEND PUTSPC
./ ADD NAME=PUTVC,LEVEL=01,SOURCE=0
MACRO
&LOC PUTVC &CL1,&N,&CL2
&LOC L 1,&CL1
L 2,&CL2+4
ST 2,4+&N.(1)
MEND PUTVC
./ ADD NAME=RCALL,LEVEL=01,SOURCE=0
MACRO
&LOC RCALL &CL,&PROC,&ARGLIST,&LOCS
LCLA &K,&L,&N,&M,&NO
&NO SETA N'&ARGLIST
&N SETA 1
&K SETA &NO
&LOC LA 14,U&SYSNDX
STM 11,14,13*8(12)
LR 13,12
.A AIF (&NO EQ 0).DONE
LD 0,&ARGLIST(&N)
STD 0,14*8+&NO*8(12)
&NO SETA &NO-1
&N SETA &N+1
AGO .A
.DONE LA 12,16+&K*8(12)
L 11,=A(&PROC)
BR 11
AIF ('&CL' EQ '').C
U&SYSNDX STD 0,&CL
AGO .D
.C ANOP
U&SYSNDX SR 0,0
SR 0,0
.D AIF ('&LOCS' EQ '').M
&K SETA 0
.H ANOP
&L SETA &L+1
AIF (T'&LOCS(&L) EQ 'O').F
B &LOCS(&L)
AGO .G
.F B V&SYSNDX
&K SETA &K+1
.G AIF (&L LT N'&LOCS).H
AIF (&K EQ 0).M
V&SYSNDX EQU *
.M MEND RCALL
./ ADD NAME=RCOMP,LEVEL=01,SOURCE=0
MACRO
&LOC RCOMP &CL1,&CL2,&GLOC,&ELOC,&LLOC
&LOC LE 0,&CL1
CE 0,&CL2
BH &GLOC
BE &ELOC
B &LLOC
MEND RCOMP
./ ADD NAME=REALST,LEVEL=01,SOURCE=0
MACRO
&LOC REALST &SP,&CL
&LOC L 15,=A(REALST)
LA 5,&SP
LE 2,&CL
BALR 14,15
MEND REALST
./ ADD NAME=REMSP,LEVEL=01,SOURCE=0
MACRO
&LOC REMSP &SP1,&SP2,&SP3
&LOC LM 1,4,&SP2
L 5,&SP3
AR 2,5
SR 1,5
STM 1,4,&SP1
MEND REMSP
./ ADD NAME=RESETF,LEVEL=01,SOURCE=0
MACRO
&LOC RESETF &PTR,&FLAG
&LOC NI &PTR+4,&FLAG.@
MEND RESETF
./ ADD NAME=REWIND,LEVEL=01,SOURCE=0
MACRO
&LOC REWIND &UNIT
&LOC L 15,=A(IBCOM#)
CNOP 0,4
BAL 14,44(15)
DC X'01',AL3(&UNIT)
MEND REWIND
./ ADD NAME=RLINT,LEVEL=01,SOURCE=0
MACRO
&LOC RLINT &YCL,&XCL,&LOC1,&LOC2
&LOC SDR 2,2
LE 2,&XCL
TM &XCL,X'40'
BNO C&SYSNDX
LTDR 2,2
BNZ F&SYSNDX
C&SYSNDX ST 0,&YCL
B D&SYSNDX
F&SYSNDX CE 2,MAXINT
AIF (T'&LOC1 EQ 'O').A
BH &LOC1
AGO .C
.A BH E&SYSNDX
.C ANOP
LPDR 4,2
AW 4,BIGZIP
STD 4,REALB
L 2,REALB+4
LTDR 2,2
BNM X&SYSNDX
LNR 2,2
X&SYSNDX ST 2,&YCL
D&SYSNDX LA 2,I
ST 2,&YCL+4
AIF (T'&LOC2 EQ 'O').B
B &LOC2
.B ANOP
E&SYSNDX EQU *
MEND RLINT
./ ADD NAME=RPLACE,LEVEL=01,SOURCE=0
MACRO
&LOC RPLACE &SP1,&SP2,&SP3
&LOC LM 3,5,&SP3
CR 3,0
BE A&SYSNDX
L 1,=A(ALPHA)
MVC TRTBL(256),0(1)
BCTR 3,0
AR 4,5
LM 5,6,&SP2+4
AR 5,6
LR 7,5
AR 7,3
LA 6,1
RPLC1 SR 3,3
IC 3,0(5)
A 3,=A(TRTBL)
MVC 0(1,3),0(4)
LA 4,1(4)
BXLE 5,6,RPLC1
LM 2,4,&SP1
LTR 2,2
BNH A&SYSNDX
AR 3,4
RPTEST C 2,=F'256'
BNH RPSHORT
TR 0(256,3),TRTBL
LA 3,256(3)
S 2,=F'256'
B RPTEST
RPSHORT BCTR 2,0
EX 2,RPEX
B A&SYSNDX
RPEX TR 0(0,3),TRTBL
A&SYSNDX EQU *
MEND RPLACE
./ ADD NAME=RRTURN,LEVEL=01,SOURCE=0
MACRO
&LOC RRTURN &CL,&N
AIF (T'&LOC EQ 'O').C
&LOC EQU *
.C AIF (T'&CL EQ 'O').A
LD 0,&CL
.A LM 11,14,13*8(13)
AIF (T'&CL EQ 'O').B
EX 0,0(14)
.B ANOP
B 4*&N.(14)
MEND RRTURN
./ ADD NAME=RSETFI,LEVEL=01,SOURCE=0
MACRO
&LOC RSETFI &CL,&FLAG
&LOC L 1,&CL
NI 4(1),&FLAG.@
MEND RSETFI
./ ADD NAME=SELBRA,LEVEL=01,SOURCE=0
MACRO
&LOC SELBRA &CL,&LOCS
LCLA &N
LCLA &M
&LOC L 1,&CL
SLA 1,2
B *+0(1)
.A ANOP
&N SETA &N+1
AIF (T'&LOCS(&N) EQ 'O').B
B &LOCS(&N)
AGO .C
.B B A&SYSNDX
&M SETA &M+1
.C AIF (&N LT N'&LOCS).A
AIF (&M EQ 0).D
A&SYSNDX EQU *
.D MEND SELBRA
./ ADD NAME=SETAC,LEVEL=01,SOURCE=0
MACRO
&LOC SETAC &CL,&V
AIF ('&V' EQ '0').A
&LOC LA 1,&V
ST 1,&CL
MEXIT
.A ANOP
&LOC ST 0,&CL
MEND SETAC
./ ADD NAME=SETF,LEVEL=01,SOURCE=0
MACRO
&LOC SETF &PTR,&F
&LOC OI &PTR+4,&F
MEND SETF
./ ADD NAME=SETFI,LEVEL=01,SOURCE=0
MACRO
&LOC SETFI &PTR,&F
&LOC L 1,&PTR
OI 4(1),&F
MEND SETFI
./ ADD NAME=SETLC,LEVEL=01,SOURCE=0
MACRO
&LOC SETLC &CL,&V
&LOC SETAC &CL,&V
MEND SETLC
./ ADD NAME=SETSIZ,LEVEL=01,SOURCE=0
MACRO
&LOC SETSIZ &CL1,&CL2
&LOC L 1,&CL1
MVC 5(3,1),&CL2+1
MEND SETSIZ
./ ADD NAME=SETSP,LEVEL=01,SOURCE=0
MACRO
&LOC SETSP &SP1,&SP2
&LOC LM 1,4,&SP2
STM 1,4,&SP1
MEND SETSP
./ ADD NAME=SETVC,LEVEL=01,SOURCE=0
MACRO
&LOC SETVC &CL1,&N
&LOC MVC &CL1+5(3),=AL3(&N)
MEND SETVC
./ ADD NAME=SHORTN,LEVEL=01,SOURCE=0
MACRO
&LOC SHORTN &SP,&CC
&LOC DECRC &SP,&CC
MEND SHORTN
./ ADD NAME=SPCINT,LEVEL=01,SOURCE=0
MACRO
&LOC SPCINT &CL,&SP,&FLOC,&SLOC
&LOC L 15,=A(DECBIN)
LA 1,&CL
LA 2,&SP
BALR 14,15
AIF (T'&FLOC EQ 'O').A
B &FLOC
AGO .B
.A B *+8
.B AIF (T'&SLOC EQ 'O').C
B &SLOC
.C MEND SPCINT
./ ADD NAME=SPEC,LEVEL=01,SOURCE=0
MACRO
&LOC SPEC &A,&F,&V,&O,&L
CNOP 0,8
&LOC DC A(&L)
DC A(&O)
DC A(&A)
DC AL1(&F)
DC AL1(0)
DC AL2(&V)
MEND SPEC
./ ADD NAME=SPREAL,LEVEL=01,SOURCE=0
MACRO
&LOC SPREAL &CL,&SP,&FLOC,&SLOC
&LOC L 15,=A(SPREAL)
LA 1,&CL
LM 2,4,&SP
BALR 14,15
AIF (T'&FLOC NE 'O').A
B U&SYSNDX
AGO .B
.A B &FLOC
.B LA 2,R
ST 2,&CL+4
AIF (T'&SLOC EQ 'O').C
B &SLOC
.C AIF (T'&FLOC NE 'O').M
U&SYSNDX EQU *
.M MEND SPREAL
./ ADD NAME=STPRNT,LEVEL=01,SOURCE=0
MACRO
&LOC STPRNT &CL,&UNIT,&SP
&LOC L 15,=A(STPRNT)
LA 1,&CL
LA 2,&UNIT
LA 3,&SP
BALR 14,15
MEND STPRNT
./ ADD NAME=STREAD,LEVEL=01,SOURCE=0
MACRO
&LOC STREAD &SP,&UNIT,&ELOC,&FLOC,&NLOC
&LOC L 15,=A(STREAD)
LA 1,&SP
LA 2,&UNIT
BALR 14,15
AIF (T'&ELOC EQ 'O').A
B &ELOC
AIF (T'&FLOC EQ 'O').B
B &FLOC
AIF (T'&NLOC EQ 'O').M
B &NLOC
MEXIT
.A AIF (T'&NLOC NE 'O').D
B *+8
AGO .E
.D B *+12
.E AIF (T'&FLOC EQ 'O').F
B &FLOC
AGO .G
.F B *+8
.G AIF (T'&NLOC EQ 'O').M
B &NLOC
MEXIT
.B AIF (T'&NLOC EQ 'O').H
B *+8
B &NLOC
MEXIT
.H B *+4
MEXIT
.M MEND STREAD
./ ADD NAME=STREAM,LEVEL=01,SOURCE=0
MACRO
&LOC STREAM &SP1,&SP2,&TB,&ELOC,&RLOC,&NLOC
&LOC L 15,=A(STREAM)
LA 1,&SP1
LA 2,&SP2
L 3,=A(&TB)
BALR 14,15
AIF (T'&ELOC EQ 'O').A
B &ELOC
AIF (T'&RLOC EQ 'O').B
B &RLOC
AIF (T'&NLOC EQ 'O').M
B &NLOC
MEXIT
.A AIF (T'&NLOC NE 'O').D
B *+8
AGO .E
.D B *+12
.E AIF (T'&RLOC EQ 'O').F
B &RLOC
AGO .G
.F B *+8
.G AIF (T'&NLOC EQ 'O').M
B &NLOC
MEXIT
.B AIF (T'&NLOC EQ 'O').H
B *+8
B &NLOC
MEXIT
.H B *+4
MEXIT
.M MEND STREAM
./ ADD NAME=STRING,LEVEL=01,SOURCE=0
MACRO
&LOC STRING &TEXT
LCLA &N
&N SETA K'&TEXT-2
CNOP 0,8
&LOC DC A(&N)
DC A(0)
DC A(U&SYSNDX)
DC A(0)
STRING CSECT
U&SYSNDX DC C&TEXT
S4 CSECT
MEND STRING
./ ADD NAME=SUBI,LEVEL=01,SOURCE=0
MACRO
&LOC SUBI &CL1,&CL2,&CL3,&FLOC,&SLOC
AIF ('&CL1' EQ '&CL2').K
&LOC LM 1,2,&CL2
S 1,&CL3
STM 1,2,&CL1
AGO .L
.K ANOP
&LOC L 1,&CL2
S 1,&CL3
ST 1,&CL1
.L ANOP
AIF (T'&FLOC EQ 'O').A
BO &FLOC
.A AIF (T'&SLOC EQ 'O').B
BNO &SLOC
.B MEND SUBI
./ ADD NAME=SUBR,LEVEL=01,SOURCE=0
MACRO
&LOC SUBR &CL1,&CL2,&CL3,&FLOC,&SLOC
&LOC LD 2,&CL2
SE 2,&CL3
STD 2,&CL1
AIF (T'&SLOC EQ 'O').M
B &SLOC
.M MEND SUBR
./ ADD NAME=SUBSP,LEVEL=01,SOURCE=0
MACRO
&LOC SUBSP &SP1,&SP2,&SP3,&FLOC,&SLOC
&LOC LM 1,4,&SP3
C 1,&SP2
AIF (T'&FLOC NE 'O').A
BL A&SYSNDX
AGO .B
.A BL &FLOC
.B L 1,&SP2
STM 1,4,&SP1
AIF (T'&SLOC EQ 'O').C
B &SLOC
.C AIF (T'&FLOC NE 'O').M
A&SYSNDX EQU *
.M MEND SUBSP
./ ADD NAME=SUML,LEVEL=01,SOURCE=0
MACRO
&LOC SUML &SP1,&SP2,&SP3
&LOC L 1,&SP2
A 1,&SP3
ST 1,&SP1
MEND SUML
./ ADD NAME=TESTF,LEVEL=01,SOURCE=0
MACRO
&LOC TESTF &PTR,&F,&FLOC,&SLOC
&LOC TM &PTR+4,&F
AIF (T'&FLOC EQ 'O').A
BNO &FLOC
.A AIF (T'&SLOC EQ 'O').M
BO &SLOC
.M MEND TESTF
./ ADD NAME=TESTFI,LEVEL=01,SOURCE=0
MACRO
&LOC TESTFI &PTR,&F,&FLOC,&SLOC
&LOC L 1,&PTR
TM 4(1),&F
AIF (T'&FLOC EQ 'O').A
BNO &FLOC
.A AIF (T'&SLOC EQ 'O').M
BO &SLOC
.M MEND TESTFI
./ ADD NAME=TOP,LEVEL=01,SOURCE=0
MACRO
&LOC TOP &PTR1,&OFFSET,&PTR2
&LOC LR 6,0
LM 1,2,&PTR2
A&SYSNDX TM 4(1),TTL
BO B&SYSNDX
SR 1,8
AR 6,8
B A&SYSNDX
B&SYSNDX ST 6,&OFFSET
STM 1,2,&PTR1
MEND TOP
./ ADD NAME=TRANDC,LEVEL=01,SOURCE=0
MACRO
&LOC TRANDC &PTR1,&N1,&PTR2,&N2
&LOC L 1,&PTR1
L 2,&PTR2
LD 0,&N2.(2)
STD 0,&N1.(1)
MEND TRANDC
./ ADD NAME=TRIMSP,LEVEL=01,SOURCE=0
MACRO
&LOC TRIMSP &SP1,&SP2
&LOC LM 1,4,&SP2
LA 5,0(2,3)
LA 6,0(1,5)
A&SYSNDX BCTR 6,0
CR 6,5
BL B&SYSNDX
CLI 0(6),C' '
BE A&SYSNDX
B&SYSNDX SR 6,5
LA 1,1(6)
STM 1,4,&SP1
MEND TRIMSP
./ ADD NAME=UNLOAD,LEVEL=01,SOURCE=0
MACRO
&LOC UNLOAD &SP
&LOC LA 1,&SP
L 15,=A(UNLOADER)
BALR 14,15
MEND UNLOAD
./ ADD NAME=VARID,LEVEL=01,SOURCE=0
MACRO
&LOC VARID &CL1,&SP
&LOC LA 1,&CL1
LR 6,1
LM 2,4,&SP
LR 7,2
LA 4,0(3,4)
C 7,=F'4'
BH A&SYSNDX
ST 0,4(6)
LR 2,6
SR 2,7
BCTR 7,0
EX 7,B&SYSNDX
L 5,4(6)
B C&SYSNDX
B&SYSNDX MVC 8(0,2),0(4)
D&SYSNDX TRT 0(0,4),0(2)
E&SYSNDX MVC 0(0,6),0(1)
A&SYSNDX CR 7,8
BH G&SYSNDX
LA 2,0(7,4)
S 2,=F'4'
MVC 4(4,6),0(2)
MVC 0(4,6),0(4)
L 5,0(6)
B C&SYSNDX
G&SYSNDX S 7,=A(8+1)
LR 1,4
L 2,=A(FRWDTB)
EX 7,D&SYSNDX
MVC 0(8,6),0(1)
L 5,0(6)
IC 5,8(4,7)
C&SYSNDX LR 4,5
SRDL 4,19
M 4,4(6)
SLDL 4,11
SLL 7,24
ALR 5,7
SRL 5,24
SLL 5,3
ST 5,0(6)
ST 4,4(6)
MEND VARID
./ ADD NAME=VCMPIC,LEVEL=01,SOURCE=0
MACRO
&LOC VCMPIC &PTR1,&PTR2,&CL,&LOC1,&LOC2,&LOC3
&LOC L 1,&PTR1
L 6,4+&PTR2.(1)
C 6,&CL+4
AIF (T'&LOC1 EQ 'O').A
BH &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B AIF (T'&LOC3 EQ 'O').C
BL &LOC3
.C MEND VCMPIC
./ ADD NAME=VEQL,LEVEL=01,SOURCE=0
MACRO
&LOC VEQL &CL1,&CL2,&LOC1,&LOC2
&LOC CLC &CL1+5(3),&CL2+5
AIF (T'&LOC1 EQ 'O').A
BNE &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B MEND VEQL
./ ADD NAME=VEQLC,LEVEL=01,SOURCE=0
MACRO
&LOC VEQLC &CL1,&N,&LOC1,&LOC2
&LOC CLC &CL1+5(3),=AL3(&N)
AIF (T'&LOC1 EQ 'O').A
BNE &LOC1
.A AIF (T'&LOC2 EQ 'O').B
BE &LOC2
.B MEND VEQLC
./ ADD NAME=ZERBLK,LEVEL=01,SOURCE=0
MACRO
&LOC ZERBLK &PTR,&CL
&LOC L 1,&PTR
L 5,&CL
LR 4,8
LR 3,0
LD 0,=D'0'
A&SYSNDX STD 0,0(3,1)
BXLE 3,4,A&SYSNDX
MEND ZERBLK
./ ENDUP