$TITLE ('SFOUND') $SMALL SFOUND_VAX: DO; /* PL/M-VAX VERSION OF SFOUND.A86 */ /*************************************************************************/ /* */ /* D I S C L A I M E R N O T I C E */ /* ------------------- ----------- */ /* */ /* This document and/or portions of the material and data furnished */ /* herewith, was developed under sponsorship of the U. S. Government. */ /* Neither the U.S. nor the U.S.D.O.E., nor the Leland Stanford Junior */ /* University, nor their employees, nor their respective contractors, */ /* subcontractors, or their employees, makes any warranty, express or */ /* implied, or assumes any liability or responsibility for accuracy, */ /* completeness or usefulness of any information, apparatus, product */ /* or process disclosed, or represents that its use will not infringe */ /* privately-owned rights. Mention of any product, its manufacturer, */ /* or suppliers shall not, nor is it intended to, imply approval, dis- */ /* approval, or fitness for any particular use. The U. S. and the */ /* University at all times retain the right to use and disseminate same */ /* for any purpose whatsoever. Such distribution shall be made by the */ /* National Energy Software Center at the Argonne National Laboratory */ /* and only subject to the distributee furnishing satisfactory proof */ /* that he has a valid license from the Intel Corporation in effect. */ /* */ /*************************************************************************/ /*****************************************************************/ /****** ******/ /****** WARNING WARNING WARNING WARNING ******/ /****** ******/ /****** This module cannot be called from another module ******/ /****** which was compiled under the LARGE control. ******/ /****** ******/ /*****************************************************************/ $INCLUDE (PLM$UDI:CUSTOMARY.LIT) DECLARE SCANP ADDRESS EXTERNAL, TARGET (1) BYTE EXTERNAL; DECLARE TARLEN BYTE PUBLIC, /* length of target */ JOKER BYTE PUBLIC INITIAL ('?'), GIVEUP ADDRESS PUBLIC; SFOUND: PROCEDURE BYTE PUBLIC REENTRANT; /* (Reentrant so local storage allocated on stack.) */ DECLARE P ADDRESS, (CHAR BASED P) (1) BYTE, I INTEGER; P=SCANP; DO P=SCANP TO GIVEUP-1; DO I=0 TO TARLEN-1; IF CHAR(I)<>TARGET(I) AND CHAR(I)<>JOKER THEN GO TO TRY_NEXT_POSITION; ENDIF ENDDO SCANP=.CHAR(TARLEN); /* position SCANP to last char matched+1 */ RETURN TRUE; TRY_NEXT_POSITION: ENDDO; RETURN FALSE; /* target not found */ END SFOUND; END SFOUND_VAX;