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