! 30 NOV 82
SYSTEMSTRINGFNSPEC HTOS(INTEGER I,PL)
EXTERNALROUTINESPEC DESTROY(STRING (255) S)
EXTERNALINTEGERFNSPEC EXIST(STRING (255) S)
EXTERNALSTRINGFNSPEC UINFS(INTEGER I)
EXTERNALSTRINGFNSPEC DERRS(INTEGER N)
!
!
EXTERNALINTEGERFNSPEC DPRG(STRING (6) USER,STRING (15) FILE, C
INTEGER FSYS,STRING (6) LABEL,INTEGER SITE)
EXTERNALINTEGERFNSPEC DUNPRG(STRING (6) USER,STRING (15) FILE, C
INTEGER FSYS,STRING (6) LABEL,INTEGER SITE)
!
!
!
INTEGERFN BIN(STRING (255)S)
INTEGER SIGN, J, K, X, N, I, CH
J = 1
K = LENGTH(S)
SIGN = 1
X = 0
!
J = J + 1 WHILE J < K AND CHARNO(S, J) = ' '
K = K - 1 WHILE J < K AND CHARNO(S, K) = ' '
!
SIGN = -1 AND J = J + 1 IF J < K AND CHARNO(S, J) = '-'
X = 1 AND J = J + 1 IF J < K AND CHARNO(S, J) = 'X'
!
-> FAIL IF J > K
!
N = 0
CYCLE I = J, 1, K
CH = CHARNO(S, I)
-> FAIL UNLESS '0'<=CH<='9' OR (X=1 AND 'A'<=CH<='F')
CH = CH - '0'
IF X = 0 C
THEN N = 10 * N + CH C
ELSE START
CH = CH - 7 IF CH > 9
N = N << 4 ! CH
FINISH
REPEAT
!
RESULT = SIGN * N
FAIL:
RESULT = X'80308030'
END ; ! BIN
!
!
!
ROUTINE UDERRS(INTEGER N)
PRINTSTRING("FLAG =")
PRINTSTRING(DERRS(N))
END ; ! UDERRS
!
EXTERNALROUTINE PRG(STRING (255) S)
STRING (63) FILE,LABEL,SSITE,USER
INTEGER SITE,J
UNLESS S->FILE.(",").LABEL.(",").SSITE THEN -> BP
USER=UINFS(1)
IF FILE->USER.(".").FILE START ;FINISH
UNLESS LENGTH(LABEL)=6=LENGTH(USER) THEN -> BP
SITE=BIN(SSITE)
UNLESS SITE>=0 AND SITE&X'3F'=0 THEN -> BP
J=DPRG(USER,FILE,-1,LABEL,SITE)
UDERRS(J)
RETURN
BP:
PRINTSTRING("PARAM ?? FORM IS:
PRG(FILE,LABEL,SITE)
")
END ; ! PRG
!
!
!
EXTERNALROUTINE UNPRG(STRING (255) S)
STRING (63) FILE,LABEL,SSITE,USER
INTEGER SITE,J
UNLESS S->FILE.(",").LABEL.(",").SSITE THEN -> BP
USER=UINFS(1)
UNLESS FILE->USER.(".").FILE START ;FINISH
UNLESS LENGTH(LABEL)=6 THEN -> BP
SITE=BIN(SSITE)
UNLESS SITE>=0 AND SITE&X'3F'=0 THEN -> BP
J=DUNPRG(USER,FILE,-1,LABEL,SITE)
UDERRS(J)
RETURN
BP:
PRINTSTRING("PARAM ?? FORM IS:
PRG(FILE,LABEL,SITE)
")
END ; ! UNPRG
!
!
!
EXTERNALROUTINE PLOD(STRING (255) S)
STRING (31) DISC1,DISC2,SITE1,SITE2,EPAGES,USER,FILE
INTEGER I1,I2,NP,J
UNLESS S->DISC1.(",").SITE1.(",").DISC2.(",").SITE2.(",").C
EPAGES AND LENGTH(DISC1)=6=LENGTH(DISC2) START
PRINTSTRING("EXAMPLE: PLOD(EMAS00,X200,EMAS00,X240,64)
")
RETURN
FINISH
USER=UINFS(1)
FILE="S#PLOD"
IF EXIST(FILE)#0 THEN DESTROY(FILE)
I1=BIN(SITE1)
I2=BIN(SITE2)
NP=BIN(EPAGES)
J=DUNPRG(USER,FILE,-1,DISC1,I1)
PRINTSTRING("UNPRG FROM ")
PRINTSTRING(DISC1)
PRINTSTRING(" X")
PRINTSTRING(HTOS(I1,3))
PRINTSTRING(" FLAG =")
WRITE(J,1); NEWLINE
RETURN IF J#0
J=DPRG(USER,FILE,-1,DISC2,I2)
PRINTSTRING("PRG TO ")
PRINTSTRING(DISC2)
PRINTSTRING(" X")
PRINTSTRING(HTOS(I2,3))
PRINTSTRING(" FLAG =")
WRITE(J,1)
END ; ! PLOD
!
!
!
ENDOFFILE