      SUBROUTINE MAIN
      LOGICAL*1 ARG(40), NAME(40)
      INTEGER VERBOS, DEBUG, I
      INTEGER GETARG, INDEXC, LENGTH
      LOGICAL*1 USESTR(25)
      DATA USESTR(1)/117/,USESTR(2)/115/,USESTR(3)/97/,USESTR(4)/103/,US
     *ESTR(5)/101/,USESTR(6)/58/,USESTR(7)/32/,USESTR(8)/32/,USESTR(9)/1
     *09/,USESTR(10)/117/,USESTR(11)/98/,USESTR(12)/108/,USESTR(13)/100/
     *,USESTR(14)/32/,USESTR(15)/91/,USESTR(16)/45/,USESTR(17)/100/,USES
     *TR(18)/118/,USESTR(19)/93/,USESTR(20)/32/,USESTR(21)/116/,USESTR(2
     *2)/97/,USESTR(23)/115/,USESTR(24)/107/,USESTR(25)/0/
      CALL QUERY(USESTR)
      DEBUG = 0
      VERBOS = 0
      NAME(1) = 0
      I=1
23000 IF (.NOT.(GETARG(I, ARG, 40) .NE. -1))GOTO 23002
      CALL FOLD(ARG)
      IF (.NOT.(ARG(1) .EQ. 45))GOTO 23003
      IF (.NOT.(INDEXC(ARG, 100) .GT. 0))GOTO 23005
      DEBUG = 1
23005 CONTINUE
      IF (.NOT.(INDEXC(ARG, 118) .GT. 0))GOTO 23007
      VERBOS = 1
23007 CONTINUE
      GOTO 23004
23003 CONTINUE
      CALL STRCPY(ARG, NAME)
23004 CONTINUE
23001 I=I+1
      GOTO 23000
23002 CONTINUE
      IF (.NOT.(NAME(1) .EQ. 0))GOTO 23009
      CALL ERROR(USESTR)
23009 CONTINUE
      IF (.NOT.(LENGTH(NAME) .GT. 4))GOTO 23011
      NAME(5) = 0
23011 CONTINUE
      CALL DOMU(NAME, DEBUG, VERBOS)
      RETURN
      END
      SUBROUTINE DOMU(NAME, DEBUG, VERBOS)
      INTEGER DEBUG, VERBOS, B1(256), B2(256), JUNK, INTM, MINT, INTR, R
     *INT, STVADR, STBLCK, ROSIZE, INT, NLBL, N
      INTEGER SSPAWN, OPEN, READF, WRITEF, CREATE, REMOVE, GETLIN
      LOGICAL*1 NAME(5), MUTASK(40), TASKMU(40), ROTASK(40), TASKRO(40),
     * FILE(40), SPWBUF(80), BUF(512), PID(7)
      LOGICAL*1 LOCAL(6)
      LOGICAL*1 PIPCMD(58)
      LOGICAL*1 PIPFMT(54)
      LOGICAL*1 ROMAC(30)
      LOGICAL*1 ROTKB(56)
      LOGICAL*1 DMMAC(7)
      LOGICAL*1 DMTKB(33)
      LOGICAL*1 MUCMD(72)
      DATA LOCAL(1)/108/,LOCAL(2)/111/,LOCAL(3)/99/,LOCAL(4)/97/,LOCAL(5
     *)/108/,LOCAL(6)/0/
      DATA PIPCMD(1)/112/,PIPCMD(2)/105/,PIPCMD(3)/112/,PIPCMD(4)/32/,PI
     *PCMD(5)/100/,PIPCMD(6)/117/,PIPCMD(7)/109/,PIPCMD(8)/109/,PIPCMD(9
     *)/121/,PIPCMD(10)/46/,PIPCMD(11)/116/,PIPCMD(12)/115/,PIPCMD(13)/1
     *07/,PIPCMD(14)/59/,PIPCMD(15)/42/,PIPCMD(16)/47/,PIPCMD(17)/100/,P
     *IPCMD(18)/101/,PIPCMD(19)/47/,PIPCMD(20)/110/,PIPCMD(21)/109/,PIPC
     *MD(22)/44/,PIPCMD(23)/100/,PIPCMD(24)/117/,PIPCMD(25)/109/,PIPCMD(
     *26)/109/,PIPCMD(27)/121/,PIPCMD(28)/46/,PIPCMD(29)/111/,PIPCMD(30)
     */98/,PIPCMD(31)/106/,PIPCMD(32)/59/,PIPCMD(33)/42/,PIPCMD(34)/44/,
     *PIPCMD(35)/100/,PIPCMD(36)/117/,PIPCMD(37)/109/,PIPCMD(38)/109/,PI
     *PCMD(39)/121/,PIPCMD(40)/46/,PIPCMD(41)/109/,PIPCMD(42)/97/,PIPCMD
     *(43)/99/,PIPCMD(44)/59/,PIPCMD(45)/42/,PIPCMD(46)/44/,PIPCMD(47)/1
     *00/,PIPCMD(48)/117/,PIPCMD(49)/109/,PIPCMD(50)/109/,PIPCMD(51)/121
     */,PIPCMD(52)/46/,PIPCMD(53)/116/,PIPCMD(54)/107/,PIPCMD(55)/98/,PI
     *PCMD(56)/59/,PIPCMD(57)/42/,PIPCMD(58)/0/
      DATA PIPFMT(1)/112/,PIPFMT(2)/105/,PIPFMT(3)/112/,PIPFMT(4)/32/,PI
     *PFMT(5)/37/,PIPFMT(6)/115/,PIPFMT(7)/114/,PIPFMT(8)/111/,PIPFMT(9)
     */46/,PIPFMT(10)/116/,PIPFMT(11)/115/,PIPFMT(12)/107/,PIPFMT(13)/59
     */,PIPFMT(14)/42/,PIPFMT(15)/47/,PIPFMT(16)/100/,PIPFMT(17)/101/,PI
     *PFMT(18)/47/,PIPFMT(19)/110/,PIPFMT(20)/109/,PIPFMT(21)/44/,PIPFMT
     *(22)/37/,PIPFMT(23)/115/,PIPFMT(24)/114/,PIPFMT(25)/111/,PIPFMT(26
     *)/46/,PIPFMT(27)/111/,PIPFMT(28)/98/,PIPFMT(29)/106/,PIPFMT(30)/59
     */,PIPFMT(31)/42/,PIPFMT(32)/44/,PIPFMT(33)/37/,PIPFMT(34)/115/,PIP
     *FMT(35)/114/,PIPFMT(36)/111/,PIPFMT(37)/46/,PIPFMT(38)/109/,PIPFMT
     *(39)/97/,PIPFMT(40)/99/,PIPFMT(41)/59/,PIPFMT(42)/42/,PIPFMT(43)/4
     *4/,PIPFMT(44)/37/,PIPFMT(45)/115/,PIPFMT(46)/114/,PIPFMT(47)/111/,
     *PIPFMT(48)/46/,PIPFMT(49)/116/,PIPFMT(50)/107/,PIPFMT(51)/98/,PIPF
     *MT(52)/59/,PIPFMT(53)/42/,PIPFMT(54)/0/
      DATA ROMAC(1)/9/,ROMAC(2)/46/,ROMAC(3)/112/,ROMAC(4)/115/,ROMAC(5)
     */101/,ROMAC(6)/99/,ROMAC(7)/116/,ROMAC(8)/9/,ROMAC(9)/114/,ROMAC(1
     *0)/111/,ROMAC(11)/37/,ROMAC(12)/115/,ROMAC(13)/10/,ROMAC(14)/9/,RO
     *MAC(15)/46/,ROMAC(16)/98/,ROMAC(17)/108/,ROMAC(18)/107/,ROMAC(19)/
     *98/,ROMAC(20)/9/,ROMAC(21)/37/,ROMAC(22)/111/,ROMAC(23)/10/,ROMAC(
     *24)/9/,ROMAC(25)/46/,ROMAC(26)/101/,ROMAC(27)/110/,ROMAC(28)/100/,
     *ROMAC(29)/10/,ROMAC(30)/0/
      DATA ROTKB(1)/37/,ROTKB(2)/115/,ROTKB(3)/114/,ROTKB(4)/111/,ROTKB(
     *5)/47/,ROTKB(6)/109/,ROTKB(7)/109/,ROTKB(8)/47/,ROTKB(9)/45/,ROTKB
     *(10)/104/,ROTKB(11)/100/,ROTKB(12)/47/,ROTKB(13)/45/,ROTKB(14)/112
     */,ROTKB(15)/114/,ROTKB(16)/44/,ROTKB(17)/44/,ROTKB(18)/114/,ROTKB(
     *19)/111/,ROTKB(20)/37/,ROTKB(21)/115/,ROTKB(22)/61/,ROTKB(23)/37/,
     *ROTKB(24)/115/,ROTKB(25)/114/,ROTKB(26)/111/,ROTKB(27)/10/,ROTKB(2
     *8)/47/,ROTKB(29)/10/,ROTKB(30)/115/,ROTKB(31)/116/,ROTKB(32)/97/,R
     *OTKB(33)/99/,ROTKB(34)/107/,ROTKB(35)/61/,ROTKB(36)/48/,ROTKB(37)/
     *10/,ROTKB(38)/112/,ROTKB(39)/97/,ROTKB(40)/114/,ROTKB(41)/61/,ROTK
     *B(42)/114/,ROTKB(43)/111/,ROTKB(44)/37/,ROTKB(45)/115/,ROTKB(46)/5
     *8/,ROTKB(47)/37/,ROTKB(48)/111/,ROTKB(49)/58/,ROTKB(50)/37/,ROTKB(
     *51)/111/,ROTKB(52)/10/,ROTKB(53)/47/,ROTKB(54)/47/,ROTKB(55)/10/,R
     *OTKB(56)/0/
      DATA DMMAC(1)/9/,DMMAC(2)/46/,DMMAC(3)/101/,DMMAC(4)/110/,DMMAC(5)
     */100/,DMMAC(6)/10/,DMMAC(7)/0/
      DATA DMTKB(1)/100/,DMTKB(2)/117/,DMTKB(3)/109/,DMTKB(4)/109/,DMTKB
     *(5)/121/,DMTKB(6)/61/,DMTKB(7)/100/,DMTKB(8)/117/,DMTKB(9)/109/,DM
     *TKB(10)/109/,DMTKB(11)/121/,DMTKB(12)/10/,DMTKB(13)/47/,DMTKB(14)/
     *10/,DMTKB(15)/114/,DMTKB(16)/101/,DMTKB(17)/115/,DMTKB(18)/99/,DMT
     *KB(19)/111/,DMTKB(20)/109/,DMTKB(21)/61/,DMTKB(22)/114/,DMTKB(23)/
     *111/,DMTKB(24)/37/,DMTKB(25)/115/,DMTKB(26)/47/,DMTKB(27)/114/,DMT
     *KB(28)/111/,DMTKB(29)/10/,DMTKB(30)/47/,DMTKB(31)/47/,DMTKB(32)/10
     */,DMTKB(33)/0/
      DATA MUCMD(1)/109/,MUCMD(2)/97/,MUCMD(3)/99/,MUCMD(4)/32/,MUCMD(5)
     */37/,MUCMD(6)/115/,MUCMD(7)/114/,MUCMD(8)/111/,MUCMD(9)/61/,MUCMD(
     *10)/37/,MUCMD(11)/115/,MUCMD(12)/114/,MUCMD(13)/111/,MUCMD(14)/10/
     *,MUCMD(15)/116/,MUCMD(16)/107/,MUCMD(17)/98/,MUCMD(18)/32/,MUCMD(1
     *9)/64/,MUCMD(20)/64/,MUCMD(21)/37/,MUCMD(22)/115/,MUCMD(23)/114/,M
     *UCMD(24)/111/,MUCMD(25)/46/,MUCMD(26)/116/,MUCMD(27)/107/,MUCMD(28
     *)/98/,MUCMD(29)/10/,MUCMD(30)/112/,MUCMD(31)/105/,MUCMD(32)/112/,M
     *UCMD(33)/32/,MUCMD(34)/37/,MUCMD(35)/115/,MUCMD(36)/61/,MUCMD(37)/
     *37/,MUCMD(38)/115/,MUCMD(39)/10/,MUCMD(40)/109/,MUCMD(41)/97/,MUCM
     *D(42)/99/,MUCMD(43)/32/,MUCMD(44)/100/,MUCMD(45)/117/,MUCMD(46)/10
     *9/,MUCMD(47)/109/,MUCMD(48)/121/,MUCMD(49)/61/,MUCMD(50)/100/,MUCM
     *D(51)/117/,MUCMD(52)/109/,MUCMD(53)/109/,MUCMD(54)/121/,MUCMD(55)/
     *10/,MUCMD(56)/116/,MUCMD(57)/107/,MUCMD(58)/98/,MUCMD(59)/32/,MUCM
     *D(60)/64/,MUCMD(61)/64/,MUCMD(62)/100/,MUCMD(63)/117/,MUCMD(64)/10
     *9/,MUCMD(65)/109/,MUCMD(66)/121/,MUCMD(67)/46/,MUCMD(68)/116/,MUCM
     *D(69)/107/,MUCMD(70)/98/,MUCMD(71)/10/,MUCMD(72)/0/
      CALL SPRINT(MUTASK, 8Hmu%s.tsk, NAME)
      CALL SPRINT(TASKMU, 8H%smu.tsk, NAME)
      CALL SPRINT(ROTASK, 8Hro%s.tsk, NAME)
      CALL SPRINT(TASKRO, 8H%sro.tsk, NAME)
      JUNK = REMOVE(MUTASK)
      JUNK = REMOVE(ROTASK)
      JUNK = SSPAWN(LOCAL, PIPCMD, PID, 119)
      CALL SPRINT(SPWBUF, PIPFMT, NAME, NAME, NAME, NAME)
      JUNK = SSPAWN(LOCAL, SPWBUF, PID, 119)
      CALL SPRINT(SPWBUF, 9Hpip %s=%s, MUTASK, TASKMU)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23013
      CALL REMARK(SPWBUF)
23013 CONTINUE
      JUNK = SSPAWN(LOCAL, SPWBUF, PID, 119)
      INTM = OPEN(TASKMU, 1)
      IF (.NOT.(INTM .EQ. -3))GOTO 23015
      CALL CANT(TASKMU)
23015 CONTINUE
      IF (.NOT.(READF(B1, 512, INTM) .NE. 512))GOTO 23017
      CALL ERROR(27HError reading label block 0)
23017 CONTINUE
      CALL CLOSE(INTM)
      STVADR = B1(19)
      STBLCK = B1(123)
      ROSIZE = 64 * B1(124)
      CALL SPRINT(FILE, 8H%sro.mac, NAME)
      INT = CREATE(FILE, 2)
      IF (.NOT.(INT .EQ. -3))GOTO 23019
      CALL CANT(FILE)
23019 CONTINUE
      CALL SPRINT(BUF, ROMAC, NAME, ROSIZE)
      CALL PUTLIN(BUF, INT)
      CALL CLOSE(INT)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23021
      CALL REMARK(FILE)
      CALL PUTLIN(BUF, 3)
23021 CONTINUE
      CALL SPRINT(FILE, 8H%sro.tkb, NAME)
      INT = CREATE(FILE, 2)
      IF (.NOT.(INT .EQ. -3))GOTO 23023
      CALL CANT(FILE)
23023 CONTINUE
      CALL SPRINT(BUF, ROTKB, NAME, NAME, NAME, NAME, STVADR, ROSIZE)
      CALL PUTLIN(BUF, INT)
      CALL CLOSE(INT)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23025
      CALL REMARK(FILE)
      CALL PUTLIN(BUF, 3)
23025 CONTINUE
      CALL STRCPY(9Hdummy.mac, FILE)
      INT = CREATE(FILE, 2)
      IF (.NOT.(INT .EQ. -3))GOTO 23027
      CALL CANT(FILE)
23027 CONTINUE
      CALL PUTLIN(DMMAC, INT)
      CALL CLOSE(INT)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23029
      CALL REMARK(FILE)
      CALL PUTLIN(DMMAC, 3)
23029 CONTINUE
      CALL STRCPY(9Hdummy.tkb, FILE)
      INT = CREATE(FILE, 2)
      IF (.NOT.(INT .EQ. -3))GOTO 23031
      CALL CANT(FILE)
23031 CONTINUE
      CALL SPRINT(BUF, DMTKB, NAME)
      CALL PUTLIN(BUF, INT)
      CALL CLOSE(INT)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23033
      CALL REMARK(FILE)
      CALL PUTLIN(BUF, 3)
23033 CONTINUE
      CALL STRCPY(9Hmubld.cmd, FILE)
      INT = CREATE(FILE, 2)
      IF (.NOT.(INT .EQ. -3))GOTO 23035
      CALL CANT(FILE)
23035 CONTINUE
      CALL SPRINT(BUF, MUCMD, NAME, NAME, NAME, ROTASK, TASKRO)
      CALL PUTLIN(BUF, INT)
      CALL CLOSE(INT)
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23037
      CALL REMARK(FILE)
23037 CONTINUE
      INT = OPEN(FILE, 1)
      N=GETLIN(BUF, INT)
23039 IF (.NOT.(N .NE. -1))GOTO 23041
      BUF(N) = 0
      IF (.NOT.(VERBOS .EQ. 1))GOTO 23042
      CALL REMARK(BUF)
23042 CONTINUE
      JUNK = SSPAWN(LOCAL, BUF, PID, 119)
23040 N=GETLIN(BUF, INT)
      GOTO 23039
23041 CONTINUE
      CALL CLOSE(INT)
      CALL CLOSE(1)
      CALL CLOSE(2)
      INTM = OPEN(TASKMU, 1)
      IF (.NOT.(INTM .EQ. -3))GOTO 23044
      CALL CANT(TASKMU)
23044 CONTINUE
      MINT = CREATE(MUTASK, 3)
      IF (.NOT.(MINT .EQ. -3))GOTO 23046
      CALL CANT(MUTASK)
23046 CONTINUE
      INT = OPEN(9Hdummy.tsk, 1)
      IF (.NOT.(INT .EQ. -3))GOTO 23048
      CALL CANT(9Hdummy.tsk)
23048 CONTINUE
      IF (.NOT.(READF(B1, 512, INTM) .NE. 512))GOTO 23050
      CALL ERROR(36HError reading label block for taskmu)
23050 CONTINUE
      IF (.NOT.(READF(B2, 512, INT) .NE. 512))GOTO 23052
      CALL ERROR(39HError reading label block for dummy.tsk)
23052 CONTINUE
      I=17
23054 IF (.NOT.(I .LE. 30))GOTO 23056
      B1(I) = B2(I)
23055 I=I+1
      GOTO 23054
23056 CONTINUE
      CALL CLOSE(INT)
      IF (.NOT.(DEBUG .EQ. 0))GOTO 23057
      JUNK = SSPAWN(LOCAL, PIPCMD, PID, 119)
23057 CONTINUE
      INTR = OPEN(TASKRO, 1)
      IF (.NOT.(INTR .EQ. -3))GOTO 23059
      CALL CANT(TASKRO)
23059 CONTINUE
      RINT = CREATE(ROTASK, 3)
      IF (.NOT.(RINT .EQ. -3))GOTO 23061
      CALL CANT(ROTASK)
23061 CONTINUE
      JUNK = WRITEF(B1, 512, MINT)
      I=2
23063 IF (.NOT.(I .LT. STBLCK))GOTO 23065
      JUNK = READF(B1, 512, INTM)
      JUNK = WRITEF(B1, 512, MINT)
23064 I=I+1
      GOTO 23063
23065 CONTINUE
      IF (.NOT.(READF(B1, 512, INTR) .NE. 512))GOTO 23066
      CALL ERROR(40HError reading label block for taskro.tsk)
23066 CONTINUE
      NLBL = B1(121)
      JUNK = WRITEF(B1, 512, RINT)
      I=2
23068 IF (.NOT.(I .LE. NLBL))GOTO 23070
      JUNK = READF(B1, 512, INTR)
      JUNK = WRITEF(B1, 512, RINT)
23069 I=I+1
      GOTO 23068
23070 CONTINUE
      NLBL = (ROSIZE - 1) / 512 + 1
      I=1
23071 IF (.NOT.(I .LE. NLBL))GOTO 23073
      JUNK = READF(B1, 512, INTM)
      JUNK = WRITEF(B1, 512, MINT)
      JUNK = WRITEF(B1, 512, RINT)
      JUNK = READF(B2, 512, INTR)
23072 I=I+1
      GOTO 23071
23073 CONTINUE
23074 IF (.NOT.(READF(B1, 512, INTM) .EQ. 512))GOTO 23075
      JUNK = WRITEF(B1, 512, MINT)
      GOTO 23074
23075 CONTINUE
      CALL CLOSE(INTM)
      CALL CLOSE(MINT)
23076 IF (.NOT.(READF(B1, 512, INTR) .EQ. 512))GOTO 23077
      JUNK = WRITEF(B1, 512, RINT)
      GOTO 23076
23077 CONTINUE
      CALL CLOSE(INTR)
      CALL CLOSE(RINT)
      IF (.NOT.(DEBUG .EQ. 0))GOTO 23078
      CALL SPRINT(SPWBUF, PIPFMT, NAME, NAME, NAME, NAME)
      JUNK = SSPAWN(LOCAL, SPWBUF, PID, 119)
23078 CONTINUE
      RETURN
      END
