SUBROUTINE GETSWT ( luntrm, cmdbuf, lencmd, + node, lennod, + copies, lencop, + queue, lenque, + delete, lendel, + form, lenfrm, + ier ) C CHARACTER*80 cmdbuf, copies, queue, delete, node CHARACTER*80 switch, argue, forms, form CHARACTER*6 copswt, delswt CHARACTER*5 queswt CHARACTER*4 nodswt CHARACTER*14 ident CHARACTER*16 timbuf C INTEGER*2 lencmd, istart, iend INTEGER*2 ier INTEGER*2 lencop, lenque, lendel, lennod INTEGER*2 endarg, swtend, lenfrm INTEGER*2 length C INTEGER*2 STRLEN, TBUILT EXTERNAL STRLEN, TBUILT C DATA copswt/'COPIES'/, delswt/'DELETE'/ DATA queswt/'QUEUE'/ DATA nodswt/'NODE'/ DATA ident/'IDENTIFICATION'/ DATA forms/'FORM'/ C C Executable begins here. C istart = 1 ! Init pointers. iend = lencmd ! 1000 CONTINUE ! Jump here for next ! switch until all are ! exhausted. CALL PARSE ( cmdbuf, istart, iend, ! Parse for + switch, locswt, swtend, ! switch. + argue, locarg, endarg, ier ) D WRITE ( 5, 40 ) locswt, swtend, locarg, endarg, ier D40 FORMAT ( ' LOCSWT: ',I6,' SWTEND: ',I6/ D + ' LOCARG: ',I6,' ENDARG: ',I6/ D + ' IER: ',I6 ) IF ( ier .GE. 0 ) THEN lenswt = STRLEN ( locswt, swtend ) D TYPE *, 'LENSWT: ',lenswt D IF ( lenswt .GT. 0 ) THEN D TYPE 76, switch(1:lenswt) D76 FORMAT ( ' SWITCH: ',A ) D END IF IF ( ier .GT. 0 ) THEN lenarg = STRLEN ( locarg, endarg ) D TYPE *, 'LENARG: ',lenarg IF ( switch(1:lenswt) .EQ. + copswt(1:lenswt) ) THEN copies(1:lenarg) = argue(1:lenarg) lencop = lenarg D TYPE *, 'Copies switch.' ELSE IF ( switch(1:lenswt) .EQ. + queswt(1:lenswt) ) THEN queue(1:lenarg) = argue(1:lenarg) lenque = lenarg D TYPE *, 'Queue switch.' ELSE IF ( switch(1:lenswt) .EQ. + nodswt(1:lenswt) ) THEN node(1:lenarg) = argue(1:lenarg) lennod = lenarg D TYPE *, 'Node switch.' ELSE IF ( switch(1:lenswt) .EQ. + forms(1:lenswt) ) THEN form(1:lenarg) = argue(1:lenarg) lenfrm = lenarg D TYPE *, 'Forms switch' ELSE WRITE ( luntrm, 1500 ) switch(1:lenswt) 1500 FORMAT ( ' %SBT-W, Illegal switch /',A,'.' ) END IF istart = endarg + 1 ELSE IF ( switch(1:lenswt) .EQ. + ident(1:lenswt) ) THEN length = TBUILT ( timbuf ) IF ( length .GT. 0 ) THEN WRITE ( luntrm, 1450 ) timbuf(1:length) 1450 FORMAT ( ' %SBT-I, Build date: ',A ) ELSE WRITE ( luntrm, 1475 ) 1475 FORMAT ( ' %SBT-W, /IDENT switch failed.' ) END IF ELSE IF ( switch(1:lenswt) .EQ. + delswt(1:lenswt) ) THEN delete(1:lenarg) = delswt(1:6) lendel = 6 D TYPE *, 'Delete switch.' ELSE TYPE 1500, switch(1:lenswt) END IF IF ( swtend .LE. 0 ) THEN istart = iend ! Force exit. ELSE istart = swtend + 1 ! Point to after switch. END IF END IF GOTO 1000 ELSE D TYPE 2000 D2000 FORMAT ( ' No more switches.' ) ier = 1 END IF D TYPE 3000, lennod, lencop, lendel, lenque D3000 FORMAT ( ' LENNOD, LENCOP, LENDEL, LENQUE: '/ D + ' ', 4(I6,2X) ) RETURN END