SUBROUTINE DEFCMD ( luntrm, cmdstr, istrt, iend, direct, ier ) C CHARACTER*80 cmdstr CHARACTER*80 trns CHARACTER*80 last CHARACTER*3 cmp CHARACTER*1 blnk, nul C LOGICAL direct, grp, usr C INTEGER*2 luntrm, lun INTEGER*2 istrt, iend INTEGER*2 off1, off2 INTEGER*2 trnlen, lentrn, ids INTEGER*2 i1, i4, ier C DATA nul/0/, blnk/' '/ DATA last/'KMS$LAST'/ DATA i1/1/, i8/8/ DATA lun/3/ C C Executable begins here. C ier = 1 off1 = INDEX ( cmdstr(istrt:iend), 'PRE' ) off2 = INDEX ( cmdstr(istrt:iend), '.' ) tot1 = off1 + istrt + 3 tot2 = off2 + istrt + 1 off3 = off1 + 3 off4 = off2 + 1 IF ( ( off1 .GT. 0 .AND. ( tot1 .GE. iend .OR. + ( cmdstr(off3:off3) .EQ. blnk .OR. + cmdstr(off3:off3) .EQ. nul ) ) ) .OR. + ( off2 .GT. 0 .AND. ( tot2 .GE. iend .OR. + ( cmdstr(off4:off4) .EQ. blnk .OR. + cmdstr(off4:off4) .EQ. nul ) ) ) ) THEN CALL GETLOG ( last, i1, i8, 80, + trns, lentrn, ids ) IF ( ids .EQ. 1 ) THEN ! Previous directory exists. cmdstr = last(1:i8) ! Load logical name and lengths. istrt = i1 iend = i8 ELSE ! No previous directory. cmdstr = 'SYS$LOGIN' ! Load logical name and lengths. istrt = i1 iend = 9 END IF GOTO 9000 END IF off1 = INDEX ( cmdstr(istrt:iend), 'HOME' ) off2 = INDEX ( cmdstr(istrt:iend), '$' ) tot1 = off1 + istrt + 4 tot2 = off2 + istrt + 1 off3 = off1 + 4 off4 = off2 + 1 IF ( ( off1 .GT. 0 .AND. ( tot1 .GE. iend .OR. + ( cmdstr(off3:off3) .EQ. blnk .OR. + cmdstr(off3:off3) .EQ. nul ) ) ) .OR. + ( off2 .GT. 0 .AND.( tot2 .GE. iend .OR. + ( cmdstr(off4:off4) .EQ. blnk .OR. + cmdstr(off4:off4) .EQ. nul ) ) ) ) THEN cmdstr = 'SYS$LOGIN' ! Load logical and lengths. istrt = 1 iend = 9 GOTO 9000 END IF 9000 CONTINUE RETURN END