project BLF > class Session > method CheckTTValuesAgainstFormats

Description

CheckTTValuesAgainstFormats


Parameters


icTempTableHandlesinputcharacterTempTableHandles.
List of comma-separated TempTable-handles that are converted to a character.
e.g. STRING(TEMP-TABLE tt-name:handle)
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program6/session.p)

/* ========================== */
    /* Go through all temp-tables */
    /* ========================== */
    do viTableCounter = 1 to num-entries(icTempTableHandles) :
        
        /* ============================== */
        /* Get a handle to the temp-table */
        /* Leave when invalid             */
        /* ============================== */
        assign vhTempTable = widget-handle(entry(viTableCounter,icTempTableHandles)) no-error.
        if error-status:error or
           not valid-handle(vhTempTable)
        then next.
        
        /* ======================================================== */
        /* Get a handle to the buffer of the input temp-table       */
        /* Create a query, define its buffer and its query-prepare  */
        /* ======================================================== */
        ASSIGN vhBuffer = vhTempTable:DEFAULT-BUFFER-HANDLE.
        if not valid-handle(vhBuffer)
        then return.
        CREATE QUERY vhQuery in widget-pool "non-persistent".
        vhQuery:forward-only = yes.
        vhQuery:SET-BUFFERS(vhTempTable:DEFAULT-BUFFER-HANDLE).
        vhQuery:QUERY-PREPARE("FOR EACH ":U + vhBuffer:NAME).
                   
        /* ============================================ */
        /* Open the query and cycle through all records */
        /* ============================================ */
        vhQuery:QUERY-OPEN().
        vhQuery:GET-FIRST().
        DO WHILE NOT vhQuery:QUERY-OFF-END :
            DO viCounter = vhBuffer:NUM-FIELDS TO 1 BY -1 :
                ASSIGN vhField = vhBuffer:BUFFER-FIELD(viCounter).
                if vhField:WIDTH-CHARS              <> ?                  and 
                   vhField:DATA-TYPE                <> ?                  and 
                   vhField:DATA-TYPE            begins "CHAR":U           and 
                   vhField:NAME                     <> "tc_rowid":U       and
                   vhField:NAME                     <> "tc_parentrowid":U and                   
                   length(vhField:BUFFER-VALUE,"CHARACTER":U)      > vhField:WIDTH-CHARS
                then do :
                    assign oiReturnStatus = -1
                           vcMessage      = trim(#T-2'Field':20(510)t-2#) + " (":U + trim(vhBuffer:NAME) + ".":U + trim(vhField:NAME) + ") ":U +  trim(#T-3'The value exceeds its format length.':100(511)T-3#) + chr(10) +  
                                            trim(#T-4'Value':7(7803)T-4#) + ": ":U + vhField:BUFFER-VALUE + chr(10) + 
                                            trim(#T-5'Format Length':100(513)T-5#) + ": ":U + string(vhField:WIDTH-CHARS).
                    <M-1 run SetMessage
          (input  vcMessage (icMessage), 
           input  '':U (icArguments), 
           input  vhField:Name (icFieldName), 
           input  vhField:Buffer-value (icFieldValue), 
           input  'E':U (icType), 
           input  3 (iiSeverity), 
           input  '':U (icRowid), 
           input  'BLF-395':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in Session>
                end. /* length(vhField:BUFFER-VALUE,"CHARACTER":U) > vhField:WIDTH-CHARS */
            END. /* DO viCounter = vhBuffer:NUM-FIELDS TO 1 BY -1 : */
            vhQuery:GET-NEXT().
        END. /* O WHILE NOT vhQuery:QUERY-OFF-END : */
        vhQuery:QUERY-CLOSE().
        DELETE OBJECT vhQuery.
        
    end.  /* do viTableCounter = 1 to num-entries(icTempTableHandles) */