10 ! ----- F$PARSE.FUN ----- ! -------------------------------------------------------------------- ! ----- PASSED: ----- ! ----- FILE_SPEC = Passed File Specification ----- ! -------------------------------------------------------------------- ! ----- RETURNS: ----- ! ----- F$PARSE() = Fully-Expanded File Specification ----- ! ----- (format of dev:[dir]file.ext) ----- ! ----- or Null String if Invalid FILE_SPEC ----- ! -------------------------------------------------------------------- ! ! ----- Last Change 05/01/89 by Brian Lomasky ----- ! ! ----- Teradyne, Inc., 179 Lincoln Street, Boston, MA 02111 ----- ! ----- (617) 482-2706, x3259 ----- ! ! ----- Neither Brian Lomasky nor Teradyne, Inc. implicitly or ----- ! ----- explicitly implies this program is usable in any way. ----- ! ----- This program is released to the public domain in an ----- ! ----- "AS-IS" condition. ----- ! ! ----- Restrictions: ----- ! ----- 1) Requires VAX BASIC V2.4 or later. ----- ! ----- 2) Requires FABDEF.INC and NAMDEF.INC Include Files ----- ! FUNCTION STRING F$PARSE(STRING FILE_SPEC) OPTION TYPE = EXPLICIT ! ENSURE EVERYTHING IS DECLARED ! ----- FAB AND NAM DEFINITIONS REQUIRED FOR SYS$PARSE ----- %INCLUDE "FABDEF.INC" %INCLUDE "NAMDEF.INC" DECLARE FABDEF FAB ! DEFINE THE FAB BLOCK DECLARE NAMDEF NAM ! DEFINE THE NAM BLOCK DECLARE LONG SYS_STATUS ! SYSTEM SERVICE EXIT STATUS ! ----- FIXED-LENGTH STRINGS PASSED TO/FROM RMS ----- MAP (FPARSE) STRING PASSED_SPEC = 255%, & STRING EXPANDED_SPEC = 255%, & STRING RESULT_SPEC = 255% EXTERNAL LONG FUNCTION SYS$PARSE! $PARSE SYSTEM SERVICE PASSED_SPEC = FILE_SPEC ! STORE PASSED FILE SPEC EXPANDED_SPEC = "" ! CLEAR EXPANDED FILE SPEC RESULT_SPEC = "" ! CLEAR RESULTING FILE SPEC ! ----- SET UP THE FAB BLOCK ----- FAB::FAB$B_BID = FAB$C_BID ! FAB BLOCK IDENTIFIER FAB::FAB$B_BLN = FAB$C_BLN ! FAB BLOCK LENGTH FAB::FAB$L_FNA = LOC(PASSED_SPEC) ! LOCATION OF PASSED FILE SPEC FAB::FAB$B_FNS = LEN(FILE_SPEC) ! LENGTH OF PASSED FILE SPEC FAB::FAB$L_NAM = LOC(NAM) ! LOCATION OF NAM BLOCK ! ----- SET UP THE NAM BLOCK ----- NAM::NAM$B_BID = NAM$C_BID ! NAM BLOCK IDENTIFIER NAM::NAM$B_BLN = NAM$C_BLN ! NAM BLOCK LENGTH NAM::NAM$B_RSS = NAM$C_MAXRSS ! SIZE OF RESULTING SPEC NAM::NAM$L_RSA = LOC(RESULT_SPEC) ! LOCATION OF RESULTING SPEC NAM::NAM$B_ESS = NAM$C_MAXRSS ! SIZE OF EXPANDED SPEC NAM::NAM$L_ESA = LOC(EXPANDED_SPEC) ! LOCATION OF EXPANDED SPEC SYS_STATUS = SYS$PARSE(FAB) ! GET INITIAL FILE INFORMATION IF (SYS_STATUS AND 1%) = 0% THEN F$PARSE = "" ! RETURN NULL STRING IF ERROR ELSE ! ----- RETURN THE FULLY PARSED SPECIFICATION ----- ! ----- LESS ANY SPACES, TABS, OR NULLS ----- F$PARSE = EDIT$(EXPANDED_SPEC, 6%) END IF END FUNCTION