Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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
languagetext
/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;
 

...