With that [undocumented] API there _was_ never any requirement to
delimit nor blank-pad the values because the two parameters were
declared as CHAR(3) and CHAR(10).
And the CL CALL folds to upper-case and implicitly pads the parameter
values to 32-bytes. Thus each of the following PARM specifications
effect identical invocations; given those aforementioned declarations
[as well for either parameter declaration up to 32-bytes]:
PARM('DLT' 'QSYS2 ')
PARM('DLT ' 'QSYS2 ')
The following would also have been the same as the above, but due to
the internal declarations vs the call mechanism:
PARM(dltjunk 'QSYS2 junk')
Though if that API had changed to allow the new long library [SCHEMA]
names, merely by increasing the parameter length, then given valid
standard library names prohibit blanks, there is a chance that some
weird attempt at an enhancement for long library names might have
enabled the 32-byte padded values to be recognized as a short name. If
so, the request still should work the same as in the past, whereby
padding is optional. But to function consistently and correctly while
doing that, probably requires either looking for any long library name
first or validating any double-quote delimited name for which blanks are
allowed; i.e. a new long name could, because of embedded blanks,
accidentally be perceived as a short name [if that was overlooked by dev
as a possibility]. Being undocumented, I suppose the dev could have
felt no obligation to protect the past behavior, such that the old
invocations might no longer function correctly.
Seems doubtful however, that the old invocations would not continue
to work, as any support for the long SCHEMA names would seem more likely
to have been designed to require a length specification per the names
being up to 128-bytes for which command-line calls are somewhat
unpleasant to effect. Even with that, the old function should still
have been preserved, because an optional\unspecified length parameter
should have identified the input value as length=10, knowing that the
value would be padded, and then optionally [IIRC the code does not care
about the actual length] adjust that assumption with effectively:
Thus I expect likely there was no requirement to pad the values, and
has me wondering what led to the conclusion that such a specification
was required, and wondering what was different when called that way.?
On 06-Jan-2014 17:15 -0800, Steinmetz, Paul wrote:
Thanks again for all the help.
1) The fix below was correct, I needed to have both parms in quotes
and the extra spaces.
CHGJOB CCSID(nnn) where nnn is the primary CCSID (which should match
the ccsid of character fields in the QSYS/QADBXREF file)
CALL QSYS2/QSQXRLF PARM('DLT' 'QSYS2 ')
CALL QSYS2/QSQXRLF PARM('CRT' 'QSYS2 ')
and then call QSYS/QSQIBMCHK again to confirm the objects are there.
RSTLICPGM 5770DE1 OPTION(2).
On 1/5/2014 7:36 PM, Steinmetz, Paul wrote:
Switched from VLAN 2 to VLAN1, OPTVRT01 now working.
Reinstalled 575770SS1 1 Extended Base Support, issue fixed.
Applied the same fix for 5770DE1 *ERROR DB2 XML Extender that I
given for same previous issue, however, this time still failed.
1) IPL then sing on as QSECOFr
2) DSPFFD QSYS/QADBXREF
- what do you see for the CCSID of the string columns?
3) CHGJOB CCSID() from step 2, the DSPFFD
4) CALL QSYS2/QSQXRLF (DLT QSYS2)
5) CALL QSYS2/QSQXRLF (CRT QSYS2)
6) CALL QSYS/QSQSYSIBM
7) CALL QSYS/QSQIBMCHK
Then run RSTLICPGM 5770DE1 OPTION(2).