! 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