**********************************************************************************************
* DBG195R4: Scan spooled file
* Copyright (C) 2001 Martin Rowe <martin@dbg400.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**********************************************************************************************
H DATEDIT(*YMD) DEBUG(*YES) OPTION(*NODEBUGIO : *SRCSTMT)
**********************************************************************************************
* FILES:
**********************************************************************************************
* CPYSPLF data
FDBG1871W IF F 259 DISK INFDS(SPL_DS) USROPN
**********************************************************************************************
* ARRAYS:
**********************************************************************************************
**********************************************************************************************
* DATA STRUCTURES:
**********************************************************************************************
* Program Status Data Structure
D System#DS SDS
D SDS#PGM 10 OVERLAY(System#DS:1)
D SDS#User 10 OVERLAY(System#DS:254)
* Information Data Structure
D Spl_DS DS
D NbrOfRcds 10I 0 OVERLAY(Spl_DS:156)
* Standard error code DS for API error handling
D Error_Code DS
D BytesProvd 10I 0 INZ(16)
D BytesAvail 10I 0 INZ(0)
D Except_ID 7
D Reserved 1
D Exception 256
* QUSRSPLA format SPLA0100 structure
D RcvrVarDS DS
D SplA0100 1000A
D PrtDevType 10 OVERLAY( SplA0100 : 319 )
**********************************************************************************************
* CONSTANTS:
**********************************************************************************************
D Lower C CONST('abcdefghijklmnopqrstuvwxyz')
D Upper C CONST('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
**********************************************************************************************
* WORK FIELDS:
**********************************************************************************************
D OnePercent S 11 2
D P_CmdString S 256
D P_CmdLength S 15 5
D P_File S 10
D P_Marker S 1 INZ(X'33')
D P_Percent S 3 0
D P_Text S 20
D P_ScanString S 25
D P_IgnoreCase S 1N
D P_Found S 1N
D P_Job S 10
D P_JobNbr S 6
D P_User S 10
D SpoolName S 10
D P_SpoolNbr S 4
D SplNbrDec S 4 0
D SpoolNbr S 10I 0
D RcdsRead S 9 0
D Remainder S 9 0
D ScanString S 25 VARYING
D IntJobID S 16 INZ(' ')
D IntSpoolID S 16 INZ(' ')
D ListFormat S 8 INZ('SPLA0100')
D RcvrVarLen S 10I 0 INZ(1000)
D QualifyJob S 26
**********************************************************************************************
* FIELD RENAMES:
**********************************************************************************************
**********************************************************************************************
* FILE LAYOUTS:
**********************************************************************************************
IDBG1871W NS 01
I 1 259 RECORD
**********************************************************************************************
* ENTRY PARAMETERS:
**********************************************************************************************
C *ENTRY PLIST
C PARM P_File
C PARM P_Job
C PARM P_User
C PARM P_JobNbr
C PARM P_SpoolNbr
C PARM P_ScanString
C PARM P_IgnoreCase
C PARM P_Found
**********************************************************************************************
* PARAMETER LISTS: *
**********************************************************************************************
**********************************************************************************************
* KEY LISTS:
**********************************************************************************************
**********************************************************************************************
* MAINLINE:
**********************************************************************************************
C EVAL QualifyJob = P_Job + P_User + P_JobNbr
C MOVE P_SpoolNbr SplNbrDec
C CALL 'QUSRSPLA'
C PARM RcvrVarDS
C PARM RcvrVarLen
C PARM ListFormat
C PARM QualifyJob
C PARM IntJobID
C PARM IntSpoolID
C PARM P_File SpoolName
C PARM SplNbrDec SpoolNbr
C PARM Error_Code
* If no error and file type can be handled by CPYSPLF
B001 C IF BytesAvail = 0 AND PrtDevType = '*SCS'
C EVAL P_CmdString = 'CPYSPLF FILE(' + P_File +
C ') TOFILE(QTEMP/DBG1871W) JOB(' +
C P_JobNbr + '/' + %TRIM(P_User) + '/' +
C %TRIM(P_Job) + ') SPLNBR(' +
C %TRIM(P_SpoolNbr) + ')'
C EVAL P_CmdLength = %LEN(%TRIM(P_CmdString))
C CALL (E) 'QCMDEXC'
C PARM P_CmdString
C PARM P_CmdLength
*
B002 C IF NOT %ERROR
*
C OPEN DBG1871W
C EVAL OnePercent = NbrOfRcds / 100
C EVAL RcdsRead = 0
C EVAL Remainder = 0
C EVAL P_Found = *OFF
C EVAL ScanString = %TRIMR(P_ScanString)
C EVAL P_Text = 'Scanning ' + %TRIM(P_File) + ':'
*
C 1 SETLL DBG1871W
C READ DBG1871W
B003 C DOW NOT %EOF(DBG1871W)
*
C EVAL RcdsRead = RcdsRead + 1
C RcdsRead DIV OnePercent P_Percent
C MVR Remainder
B004 C IF Remainder = 0
C CALL 'DBG202R4'
C PARM P_Percent
C PARM P_Text
C PARM P_Marker
E004 C ENDIF
*
B004 C IF P_IgnoreCase
C Lower:Upper XLATE RECORD RECORD
C Lower:Upper XLATE ScanString ScanString
E004 C ENDIF
*
B004 C IF %SCAN(ScanString : RECORD) > 0
C EVAL P_Found = *ON
C LEAVE
E004 C ENDIF
*
C READ DBG1871W
E003 C ENDDO
C CLOSE DBG1871W
E002 C ENDIF
E001 C ENDIF
*
C RETURN
**********************************************************************************************