Path: utzoo!utgpu!attcan!uunet!convex!killer!ames!pasteur!ucbvax!GOLD.BACS.INDIANA.EDU!ijah400%ivax.DECnet From: ijah400%ivax.DECnet@GOLD.BACS.INDIANA.EDU ("IVAX::IJAH400") Newsgroups: comp.os.vms Subject: RE: Problem with F$PARSE Message-ID: <8807291705.AA01444@ucbvax.berkeley.edu> Date: 22 Jul 88 17:25:00 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 44 "The Sysco Kid (McGuire,Ed)" writes: < Gentle Readers, <... < I'm attaching it here. In brief, an F$PARSE call appears to < stop returning a value after it has been called with identical arguments a < number of times. <... < ------------------------------------------------------------------------------ < $LOOP: < $ CALL SUBR < $ GOTO LOOP < $ < $SUBR: < $ SUBROUTINE < $ FILESPEC = F$PARSE ("SYS$SYSTEM", "*.*;*") < $ INSTANCE = F$SEARCH (FILESPEC) < $ SHOW SYMBOL FILESPEC < $ SHOW SYMBOL INSTANCE < $ ENDSUBROUTINE < ------------------------------------------------------------------------------ < FILESPEC = "SYS$SYSROOT:[SYSEXE]*.*;*" < INSTANCE = "SYS$SYSROOT:[SYSEXE]AUTOGEN.PAR;23" < FILESPEC = "SYS$SYSROOT:[SYSEXE]*.*;*" < INSTANCE = "SYS$SYSROOT:[SYSEXE]AUTOGEN.PAR;23" <... CALL sets up a whole new procedure context, like @filespec does. In other words, don't use CALL anywhere where @filespec wouldn't work either. Try using GOSUB/RETURN instead, e.g.: $ FILESPEC = F$PARSE ("SYS$SYSTEM", "*.*;*") $LOOP: $ GOSUB SUBR $ IF INSTANCE .EQS. "" THEN EXIT $ GOTO LOOP $ $SUBR: $ INSTANCE = F$SEARCH (FILESPEC) $ SHOW SYMBOL FILESPEC $ SHOW SYMBOL INSTANCE $ RETURN - Jim Harvey ijah400@indyvax (bitnet) or ijah400%ivax.decnet@gold.bacs.indiana.edu