...
- Suppose you have a customer address file CUSTADRP with the following fields
- CUSTNO: zoned(4:0)
- NAME: char(30)
- STREET: char(30)
- CITY: char(20)
- STATE: char(2)
- POSTAL: char(10)
- The fields NAME, STREET, CITY are defined on the Rich Display File with their normal sizes.
- However, you want to be able to send very large data (> 32K) for those fields to the Rich Display Fiel at WRITE or EXFMT time.
- The example program uses procedure profoundui_overrideValue() to override the value for those fields (NAME, CITY, STREET), using data from the big fields “bigName”, “bigStreet”, “bigCity”, before doing WRITE or EXFMT to the record format,
- The large fields can be type CHAR, VARCHAR, or CLOB, as shown in the example.
Code Block | ||
---|---|---|
| ||
/DEFINE PROFOUNDUI
FCUSTADRP if e k disk
FMYFILE CF E WorkStn Handler('PROFOUNDUI(HANDLER)')
/COPY QRPGLEINC,PUIRDF
dcl-s bigName char(35000);
dcl-s bigStreet varchar(40000);
dcl-s bigCity sqlType(clob: 45000);
dcl-s temp char(37000);
dcl-s fileName char(10) inz('MYFILE');
// main()
custno = 1234;
chain custno custadrp;
if %found(custadrp);
// Override fields NAME, STREET, CITY, to use large fields
// char(35000) field; use %addr(field) for Data, -1 for DataLen for 0-terminated
// string, 34K bytes
bigName = *all'X';
%subst(bigName: 1: 5) = 'START';
%subst(bigName: 34000-3+1: 3) = 'END';
%subst(bigName: 34000+1 : 1) = x'00';
profoundui_overrideValue('MYLIB/MYFILE': 'FM01': 'name': // fileName can be qualified name
%addr(bigName ): -1 ); // -1 for 0-terminated
// varchar(40000) field; use %addr(field:*data) for Data, %len(field) for DataLen
temp = *all'Y'; // 37K
bigStreet = temp; // use 37K of 40K
%subst(bigStreet: 1: 5) = 'START';
%subst(bigStreet: 37000-3+1: 3) = 'END';
profoundui_overrideValue(fileName: 'FM01': 'street':
%addr(bigStreet:*data): %len(bigStreet));
// clob(45000) field; use %addr(field_data) for Data, field_len for DataLen
exec SQL select BIGCITY
into :bigCity
from CUSTADRP2
where custno = :CUSTNO;
if sqlCode <> 0;
bigCity_data = 'bigCity not found in CUSTADRP2';
bigCity_len = %len(%trim(bigCity_data));
endif;
profoundui_overrideValue(fileName: 'FM01': 'city':
%addr(bigCity_data): bigCity_len);
exfmt FM01;
endif;
*InLr = *On;
Return;
|
...