The Question is:
Pipe and the "show symbol".
I had a global symbol jd_6. It was one of the symbols
within symbol "array" with global symbols jd_<n> (n=1,21)
$ say f$type(jd_6)
I new that there was several ways to display a value of the symbol
but that day I wanted to diplay the symbol using pipe command.
$ pipe show symb jd_* | search sys$input jd_6 /nooutput
%SEARCH-I-NOMATCHES, no strings matched
I was surprised when I saw NOMATCHES message.
I did the following:
$ define sys$output show_symb.lis
$ show symb jd_*
$ deas sys$output
$ search show_symb.lis jd_," == "/match=and /nooutput /stat
Files searched: 1 Buffered I/O count: 4
Records searched: 21 Direct I/O count: 2
Characters searched: 5443 Page faults: 16
Records matched: 21 Elapsed CPU time: 0 00:00:00.01
Lines printed: 0 Elapsed time: 0 00:00:00.03
$ search show_symb.lis jd_6 /nooutput
$ say $severity
It told me that it was 21 global symbols jt_<n> and symbol jd_6 was defined
too, but could not be seen with the pipe command.
I did the following too:
$ pipe show symb jd_* | search sys$input jd_," == "/match=and/nooutput /stat
Files searched: 1 Buffered I/O count: 12
Records searched: 10 Direct I/O count: 0
Characters searched: 2439 Page faults: 18
Records matched: 10 Elapsed CPU time: 0 00:00:00.00
Lines printed: 0 Elapsed time: 0 00:00:00.00
It told me that only 10 of the jd_ symbols could be seen with the pipe command.
$ pipe show symb jd_* | search sys$input jd_," == "/match=and
displayed symbols jd_1,10,11,12,13,14,2,3,4,7
The same symbols were displayed when I used "type" instead for "search"
Why were some symbols missing when I used pipe?
The Answer is :
When posing a question such as this, please provide a complete
standalone reproducer for the problem. Using examples such as
the following, the OpenVMS Wizard is unable to duplicate the
$ jd_6 == "Hello"
$ pipe show symbol jd_* | search sys$pipe jd_6," == "/match=and
JD_6 == "Hello"
$ pipe show symbol jd* | search sys$input jd," == "/match=and
JDBD*UMP == "$SYS$SYSTEM:TCPIP$DHCP_DBDUMP.EXE"
JDBM*OD == "$SYS$SYSTEM:TCPIP$DHCP_DBMODIFY.EXE"
JDBR*EG == "$SYS$SYSTEM:TCPIP$DHCP_DBREGISTER.EXE"
JDBS*HOW == "$SYS$SYSTEM:TCPIP$DHCP_DBSHOW.EXE"
JD_6 == "Hello"
SYS$INPUT is the command input stream for a DCL command procedure,
though PIPE provides SYS$INPUT and SYS$PIPE for the command input
and for the output from the previous stage of the PIPE. You will
particularly want to use SYS$PIPE as the input stream from the
previous stage if you are invoking a procedure from within a PIPE.