EXTERNALROUTINE SUBMIT(STRING (255)S)
RECORDFORMAT PARMF(INTEGER D, S, P1, P2, P3, P4, P5, P6)
RECORDFORMAT RF(INTEGER ADR, TYP, STA, END)
SYSTEMROUTINESPEC CONNECT(STRING (31)FILE, INTEGER MOD, GAP, PROT,
RECORD (RF)NAME R, INTEGERNAME FLAG)
SYSTEMROUTINESPEC MOVE(INTEGER LEN, FROM, TO)
EXTERNALINTEGERFNSPEC DSUBMIT(RECORD (PARMF)NAME P,
INTEGER LEN, ADR, STRING (6)USER)
EXTERNALINTEGERFNSPEC DTRANSFER(STRING (6)U1, U2, STRING (11)F1, F2,
INTEGER FSYS1, FSYS2, TYPE)
INTEGER J, N, START, LENGTHH, TIME
STRING (15)USER, FILE, TIMES
BYTEINTEGERARRAY M(0:2000)
RECORD (PARMF)P
!
STRINGFN ITOS(INTEGER VALUE)
STRING (11)S
STRING (1)SIGN
INTEGER J
SIGN = ""
S = ""
SIGN = "-" AND VALUE = -VALUE IF VALUE < 0
CYCLE
J = VALUE
VALUE = VALUE//10
J = J-VALUE*10+'0'
S = TO STRING(J).S
EXIT IF VALUE <= 0
REPEAT
RESULT = SIGN.S
END
!
INTEGERFN STOI(STRING (255)S, INTEGERNAME I)
STRING (63)P
INTEGER TOTAL, SIGN, AD, J, HEX
HEX = 0
TOTAL = 0
SIGN = 1
AD = ADDR(P)
A: IF S -> P.(" ").S AND P="" THEN -> A; !CHOP LEADING SPACES
IF S -> P.("-").S AND P="" THEN SIGN = -1
IF S -> P.("X").S AND P="" THEN HEX = 1 AND -> A
P = S
UNLESS S -> P.(" ").S THEN S = ""
I = 1
WHILE I <= BYTEINTEGER(AD) CYCLE
J = BYTE INTEGER(I+AD)
-> FAULT UNLESS '0' <= J <= '9' OR (HEX # 0 C
AND 'A' <= J <= 'F')
IF HEX = 0 C
THEN TOTAL = 10*TOTAL C
ELSE TOTAL = TOTAL<<4+9*J>>6
TOTAL = TOTAL+J&15
I = I+1
REPEAT
IF HEX # 0 AND I > 9 THEN -> FAULT
IF I > 1 THEN I = SIGN*TOTAL AND RESULT = 0
FAULT:
I = 0
RESULT = 1
END
!
ROUTINE WSN(STRING (255)S, INTEGER N)
PRINTSTRING(S)
SPACE
WRITE(N, 1)
NEWLINE
END
!
ROUTINE ADD(STRING (255)S)
INTEGER L
L = LENGTH(S)
MOVE(L, ADDR(S) + 1, ADDR(M(N + 1)))
N = N + L
END
!
!
!
UNLESS S -> USER . (",") . FILE . (",") . TIMES START
PRINTSTRING(S)
NEWLINE
RETURN
FINISH
!
J = STOI(TIMES, TIME)
UNLESS J = 0 START
PRINTSTRING("TIME ? ".TIMES)
NEWLINE
RETURN
FINISH
!
J = DTRANSFER("ERCC04",USER,FILE,"SUBMITFILE",2,97,3)
UNLESS J = 0 START
WSN("DTRANSFER", J)
RETURN
FINISH
!
N = 0
ADD("DOCUMENT SRCE=SUBMITFILE,USER=")
ADD(USER)
ADD(",DEST=BATCH,TIME=")
ADD(TIMES)
ADD(",START=32,LENGTH=10,OUT=FILE,OUTNAME=BATCHOUT,NAME=")
ADD(FILE)
J = DSUBMIT(P, N, ADDR(M(1)), USER)
!
IF J = 0 C
THEN WSN("DOC", P_P2) C
ELSE START
WSN("DSUBMIT", J)
IF N < 256 START
M(0) = N
WSN(STRING(ADDR(M(0))), P_P3)
FINISH
FINISH
END
ENDOFFILE