rarback@bnlux0.bnl.gov (harvey rarback) (05/12/88)
I am having trouble using DCL qualifiers which take a value.  In particular,
if the value is an expression, I am not able to get DCL to evaluate the
expression.  What am I doing wrong?  (VMS version 4.4).
Here is the offending DCL:
$ module = "2" + "2"
$ library /extract='module'      fortune.tlb  ! this works
$
$ library /extract="2"+"2"       fortune.tlb
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters
$
$ library /extract=("2"+"2")     fortune.tlb
%DCL-W-NOPAREN, value improperly delimited - supply parenthesis
$
$ library /extract=(("2")+("2")) fortune.tlb
%DCL-W-VALREQ, missing qualifier or keyword value - supply all required values
   ----
Harvey Rarback                Internet: rarback@bnlux0.bnl.gov
Brookhaven National Lab       BITNET:   RARBACK@BNLUX0
Upton, NY 11973               UUCP:     ...philabs!sbcs!bnlux0!rarback
(516)  282-3758               PHYSNET:  BNLX1::RARBACK (44166::RARBACK)sommar@enea.se (Erland Sommarskog) (05/18/88)
Harvey Rarback (rarback@bnlux0.UUCP) writes: >$ library /extract="2"+"2" fortune.tlb >%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters Do: $ LIBRARY/EXTRACT="''2+2'" -- Erland Sommarskog Take C, a third class language ENEA Data, Stockholm and a C programmer, i.e. a third class programmer sommar@enea.UUCP => A ninth class program, a C program.
schuetz@iravcl.ira.uka.de (05/19/88)
Hello, three days ago I posted a followup to this group - no, it was no late april fool. We have a (not the only) bug in our vms-news-system which will evaluate every string between double-quotes while posting it to the forward machine. On the local machine it looks ok. *** Please substitute every back-quote by a double-quote. *** --------- once again ---------- > $ module = `2` + `2` > $ library/extract='module' fortune.tlb is the same as $ library/extract=`22` fortune.tlb But back to your problem: Just try $ library/extract ``2` + `2`` fortune.tlb Hope this helps. Cheers, Elmar
LEICHTER@VENUS.YCC.YALE.EDU ("Jerry Leichter ", LEICHTER-JERRY@CS.YALE.EDU) (05/24/88)
Harvey Rarback (rarback@bnlux0.UUCP) writes: >$ library /extract="2"+"2" fortune.tlb >%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters Do: $ LIBRARY/EXTRACT="''2+2'" When did you start running VMS V6.0? :-) This doesn't work in any version of VMS I've ever seen, it's actually equiva- lent to the (rather unlikely) command: $ LIBRARY/EXTRACT="+2'" DCL does not have any syntax for specifying expression evaluation at arbitrary places in the input. What it you CAN specify is SUBSTITUTION OF SYMBOLS, a much more limited thing. Expression evaluation occurs in certain well-defined contexts, such as after an "=", ONLY. The original author's problem can be solved easily in two statements: $ value = "2" + "2" $ LIBRARY/EXTRACT="''value'" (or $ LIBRARY/EXTRACT=&value) This is a bizzare example, actually, since I THINK the original author is expecting to extract module 4 - but he will actually get module 22. The "+" is polymorphic; it adds integers, but concatenates strings. In most cases in DCL, the two are freely interchangeable, but here the difference is noticable: $ value = "2" + "2" !Two strings, result "22" $ value = 2 + 2 !Two integers, result 4 $ value = "2" + 2 !String coerced to integer, result 4 If it was indeed "22" that the original author wanted, there is a one-line solution (the point of which is only visible if you use variables): $ X1 = "2" $ X2 = "2" $ LIBRARY/EXTRACT="''X1'''X2'" Concatenation is an implicit side-effect of substitution, so no evaluation is needed. -- Jerry