[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference iosg::all-in-1_v30

Title:*OLD* ALL-IN-1 (tm) Support Conference
Notice:Closed - See Note 4331.l to move to IOSG::ALL-IN-1
Moderator:IOSG::PYE
Created:Thu Jan 30 1992
Last Modified:Tue Jan 23 1996
Last Successful Update:Fri Jun 06 1997
Number of topics:4343
Total number of notes:18308

533.0. "EXAMINE % wildcard character" by GLOVES::ALLERTON (Steve Allerton 343-0205) Tue Apr 21 1992 17:37

    
    I think there may be a slight problem with wildcarding and the 
    EXAMINE function.  I've found that the % wildcard character is ineffectual
    when supplied as a trailing character.  Examples :
    
    <EXAMINE(sym="$CM%SYMBOL*")  - returns $CM_SYMBOLn (n= 1-8)
    
    <EXAMINE(sym="$CM%SYMBOL%") - returns nothing
    
    Is this a known problem ?
    
    Thanks,
    
    Steve
T.RTitleUserPersonal
Name
DateLines
533.1Seems to be confined to permanent symbolsBUFFER::VICKERSPerfect is the enemy of goodTue Apr 21 1992 18:155
    I just did a wee bit of testing and discovered that the trailing % does
    work on temporary symbols but not permanent symbols.
    
    Most strange,
    don
533.2Whoops!SHALOT::NICODEMWho told you I&#039;m paranoid???Tue Apr 21 1992 20:2535
	Interesting one; and just to add to the confusion, the problem exists
with SYS$... symbols as well.

	Well, for what it's worth, here's the problem.  (For those that don't
care, it's in the BLISS code, and won't be fixable without a patch; so you'll
have to live with it.)

	There's an internal routine called OA$SYM_EXAMINE_SYM that generates
the output that you see when you do an EXAMINE (SYM=...).  This routine walks
through all symbol tables -- local symbols, permanent symbols, special symbols,
etc., and tries to match each name against the "filter" provided.

	There's one *big* difference between the "permanent" symbol tables
(i.e., user .PST and SYS$... symbols) and all of the rest kept in memory.  And
that is that the in-memory symbols are kept in tabular form, with a name and a
value.  The permanent symbols, on the other hand, are stored as records within
RMS ISAM files, where *part* of the record is the symbol name, and *part* of
the record is its value.

	The way that the EXAMINE function works is to process every element
from every table.  It takes its "name", and matches it against the filter given.
Unfortunately, when the routine walks through the user .PST and the system .PST,
it forgets that only *part* of the record is the symbol name.  It's actually
doing a match against the *entire record*!

	So if $TEST1 has a value of "ABC", and $TEST2 has a value of "XYZ",
and the EXAMINE function is trying to match $TEST%, it never sees any records
that consist of *only* "$TEST" and *one single character* following!  However,
that is also why using the "*" wildcard (i.e., *whatever* characters follow)
works!

	[Note to IOSG:  The problem needs to be corrected in two places -- in
the sections of code that process the two permanent symbol tables.  In each
case, fter the OA$IO_GET from the PST_RAB, you'll need to parse off *just* the
symbol name -- i.e., strip the "value" portion -- before doing the match.]
533.3Steve - you have reported it haven't you?AIMTEC::WICKS_AMore Ship dates than actual ShipsThu Apr 23 1992 03:101