project QadFinancials > class BPaymentSelection > method GetFileName

Description

GetFileName


Parameters


icPayFormatTypeCodeinputcharacterPayFormatTypeCode
icTransferFilePathinputcharacterTransferFilePath
ocOutputFileNameoutputcharacterOutputFileName
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPaymentSelection.ApiRepetitiveTransferPayments


program code (program1/bpaymentselection.p)

assign vcmSlash = (if opsys = "UNIX":U then "/":U else "~\":U).

/* Get the mask output file */
<Q-1 run PayFormatTypeByType (all) (Read) (NoCache)
   (input icPayFormatTypeCode, (PayFormatTypeCode)
    output dataset tqPayFormatTypeByType) in BPaymentFormat >
find first tqPayFormatTypeByType no-error.
if not available tqPayFormatTypeByType
then do:
    <M-2 run SetMessage (input  #T-6'The specified payment format $1 is not found in the system.':100(2979)t-6# (icMessage),
                     input  icPayFormatTypeCode (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'D':U (icType),
                     input  2 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-1116':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
    assign oiReturnStatus = -1.
    return.
end.               

/* Output File Mask: 'DD' - day(today), 'MM' - month(today), 'YY/YYYY' - year(today) */
assign vcOutputFileMask = trim(tqPayFormatTypeByType.tcPayFormatTypeOutFileMask).

if vcOutputFileMask = '':U
then assign vcOutputFileMask = 'YYMMDD$1.txt':U.

assign vcOutputFileMask = replace(vcOutputFileMask,'DD':U,string(day(today),'99':U))
       vcOutputFileMask = replace(vcOutputFileMask,'MM':U,string(month(today),'99':U))
       vcOutputFileMask = replace(vcOutputFileMask,'YYYY':U,string(year(today),'9999':U))
       vcOutputFileMask = replace(vcOutputFileMask,'YY':U,substring(string(year(today),'9999':U),3,2,"CHARACTER":U))
       viFileSequence   = viFileSequence + 1.

do while ocOutputFileName = '':U or
         search(ocOutputFileName) <> ?:

    Assign file-info:file-name = icTransferFilePath.
    if file-info:file-type = ?
    then do:
        <M-10 run SetMessage (input  #T-12'This is not a valid directory.':255(17073)T-12# (icMessage), 
                      input  icTransferFilePath (icArguments), 
                      input  '':U (icFieldName), 
                      input  icTransferFilePath (icFieldValue), 
                      input  'E':U (icType), 
                      input  3 (iiSeverity), 
                      input  '':U (icRowid), 
                      input  'QADFIN-4192':U (icFcMsgNumber), 
                      input  '' (icFcExplanation), 
                      input  '' (icFcIdentification), 
                      input  '' (icFcContext), 
                      output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
        assign oiReturnStatus = -1.
        return.
    end.

    assign ocOutputFileName    = icTransferFilePath + vcmSlash + (if index(vcOutputFileMask,'$1':U) > 0
                                                                then replace(vcOutputFileMask,'$1':U,string(viFileSequence,'999':U))
                                                                else if index(vcOutputFileMask,'&1':U) > 0
                                                                then subst(vcOutputFileMask, string(viFileSequence,'999':U))
                                                                else right-trim(vcOutputFileMask) + string(viFileSequence,'999':U))
           file-info:file-name = ocOutputFileName.
    
    if search( file-info:full-pathname ) <> ? and
             ( index( file-info:file-type, "F":U ) = 0 or
               index( file-info:file-type, "R":U ) = 0 )
    then assign ocOutputFileName = '':U
                viFileSequence   = viFileSequence + 1.
    else assign viFileSequence   = viFileSequence + 1.            
                
    if viFileSequence = 1000
    then do:
        <M-3 run SetMessage
          (input  #T-13'There are too many files (more than 1000) in the specified directory. Clean up the directory first.':255(17074)t-13# (icMessage), 
           input  icTransferFilePath (icArguments), 
           input  '':U (icFieldName), 
           input  icTransferFilePath (icFieldValue), 
           input  'D':U (icType), 
           input  2 (iiSeverity), 
           input  '':U (icRowid), 
           input  'QADFIN-1117':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
        assign oiReturnStatus = -1.
        return.
    end.
end.

if ocOutputFileName = '':U
then do:
    <M-4 run SetMessage
          (input  #T-8'The specified file name is invalid (empty).':200(2981)t-8# (icMessage), 
           input  '':U (icArguments), 
           input  '':U (icFieldName), 
           input  '':U (icFieldValue), 
           input  'D':U (icType), 
           input  2 (iiSeverity), 
           input  '':U (icRowid), 
           input  'QADFIN-1312':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
    assign oiReturnStatus = -1.
    return.
end.
else do on error undo, retry:
    if retry
    then do:
        <M-5 run SetMessage
          (input  #T-9'The system cannot provide output to: $1.':200(2982)t-9# (icMessage), 
           input  ocOutputFileName (icArguments), 
           input  '':U (icFieldName), 
           input  '':U (icFieldValue), 
           input  'D':U (icType), 
           input  2 (iiSeverity), 
           input  '':U (icRowid), 
           input  'QADFIN-1313':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
        assign oiReturnStatus = -1.
        return.
    end.
    output to value(ocOutputFileName).
    output close.
end.