|
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 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.