!   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