|
You can effect nearly identical to what TEMPLATE provides, using BASED, as shown here. Note that the QUALIFIED keyword is *not* required to be specified; although unqualified references will be problematic if the basing pointer is not set correctly; oddly, I do not get a MCH3601 on v6r1 [but I do on v5r3, and msg CPF8E17 when EVAL @MODE] when the basing pointer is initialized to *NULL as shown, and instead get INCORROUT UNPRED (UR) results -- but the code shown here sets the pointer to the address of the by-reference-pointer *immediately* upon entry:
d ptrToData s * inz(*NULL)
d @PARMS e DS extname(OB0050PR)
d based(ptrToData)
d OB0050AN pi
d @RETURNCODE 2A
d @CALLER 10A
d PARMS likeds(@PARMS)
d c111 s 111A
/free
ptrToData = %addr(PARMS) ;
// The following, if un-commented, are function equivalents:
// if parms.@mode = 'B' ;
// if @MODE = 'B' ;
Thus, for the same reason those two predicates are the /same/, the SQL can be written as shown here, thus avoiding a qualified name that would prevent the pre-compiler from functioning as desired:
UPDATE myTable SET myColumn = :@MODE WHERE ...
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.