× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



JHHL asked:

> This whole discussion of BLOBs, CLOBs, datalinks, &c. has me
> suddenly developing an interest in UFCB optional parameters.
> Is there a reference table somewhere, listing the parameters,
> or at least those known to those who don't work for IBM Rochester?

The values for overrides from OVRDBF, OVRDSPF, OVRPRTF, OVRSAVF, are
actually the same values as the optional parameter values in a UFCB.  So
type some dummy override value from the command line, and the system will
generate the UFCB optional parameter value, and will store them in your
job's Data Management Communication Queue space object.  Then examine your
job's DMCQ space object, walk its override chain, find your override, read
the binary parameter values, ruminate, and translate it into MI code for a
UFCB program.

Here is a simple way to walk your job's override chain:

DCL SYSPTR ?QDMCQ BASPCO POS(H"21");
DCL MSPPTR ?WALK;
DCL NEXT BAS(?WALK) POS(1) BIN(4);

      SETSPPFP  ?WALK, ?QDMCQ;
      SETSPPO   ?WALK, H"88";
LOOP: CMPNV(B)  NEXT, -1 / EQ(QUIT);
      SETSPPO   ?WALK, NEXT;
      /* examine the override based here on ?WALK */
      B         LOOP;
QUIT: /* done */

Suppose you want a printer file UFCB to use page length 88 and page width
198.  So just type a dummy override on the command line, like so:

OVRPRTF FILE(GGGGGGGGGG) PAGESIZE(88 198)

Then walk the override chain in your job's QDMCQ space until you find your
eye-catcher "GGGGGGGGGG".  Notice the binary data in this override example
becomes:

X"00 8E 00 0D C0 08 80 00 0F 19 80 00 0F"

Aha, here is your value for a UFCB optional parameter.  Ruminate on this
data and figure out how to translate it into MI for your UFCB.  In this
case, it would be:

DCL PageSizeId       BIN(2) INIT(142);   /* X"008E" */
DCL PageSizeIdSize   BIN(2) INIT(14);    /* X"000D" */
DCL PageSizeFlags    CHAR(1) INIT(X"C0");
DCL PageSizeLength   PKD(7,4) INIT("88.0000");
DCL PageSizeWidth    PKD(7,4) INIT("198.0000");

The override command in CL is just a stepping stone to figure out the UFCB
parameter value.  You don't need the CL override when you actual run the MI
program, if you have coded the parameter value in the UFCB.

Another example, suppose you want a printer file UFCB to determine when its
spooled file may become available.  So type three dummy overrides on the
command line:

OVRPRTF FILE(JJJJJJJJJJ) SCHEDULE(*JOBEND)
OVRPRTF FILE(FFFFFFFFFF) SCHEDULE(*FILEEND)
OVRPRTF FILE(IIIIIIIIII) SCHEDULE(*IMMED)

Then walk the override chain in your job's QDMCQ space and look for your
three eye-cathcers "JJJJJJJJJJ", "FFFFFFFFFF", "IIIIIIIIII".  You notice
the binary data in the three overrides difer by one byte:

X"00 41 D1"
X"00 41 C6"
X"00 41 C9"

Aha, here is your value for a UFCB optional paramter.  In this case, it
would be:

DCL ScheduleId     BIN(2) INIT(65);   /* X"0041" */
DCL ScheduleValue  CHAR(1) INIT("J");
/* "J" = *JOBEND   */
/* "F" = *FILEEND  */
/* "I" = *IMMED    */




As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.