STRPDM.COM

     F*---------------------------------------------------------------*
     F*  PROGRAM DESCRIPTION: COMPARE MEMBERS OF 2 SOURCE FILES.      *
     F*                       REPORT ANY MEMBERS THAT EXIST IN ONE    *
     F*                       SOURCE FILE, BUT NOT THE OTHER.  THIS   *
     F*                       PROGRAM WILL ALSO REPORT ANY MEMBERS    *
     F*                       THAT ARE IN BOTH FILES, BUT HAVE        *
     F*                       DIFFERENCES BETWWEN THE TWO.            *
     F*  CREATED BY         :                                         *
     F*  CREATE DATE        :                                         *
     F*---------------------------------------------------------------*
     F*  MODIFICATIONS:                                               *
     F*---------------------------------------------------------------*
     F*  MODIFIED BY        :                                         *
     F*  MODIFY DATE        :                                         *
     F*  MODIFICATION       :                                         *
     F*---------------------------------------------------------------*
     F* Description
     FSRCCMPW1  IF   E           K DISK    PREFIX(W1)
     F                                     RENAME(QWHFDML:ASRC)
     FSRCCMPW2  IF   E           K DISK    PREFIX(W2)
     F                                     RENAME(QWHFDML:BSRC)
     FSRCCMPW3  IF   E           K DISK    USROPN

 
     FQPRINT    O    F  132        PRINTER
     F*         Report
     D                 DS
     D TIME                    1     12  0
     D TIME_TIM                1      6  0 inz(0)
     D TIME_DAT                7     12  0 inz(0)
     D
     D LineCnt         S              3  0 inz
     D DASH_132        S            132    inz(*all'_')
     D TTL_001         C                   '**   COMPARE MEMBERS  **'
     D TTL_002         C                   '  SYNCHRONIZATION REPORT '
     D @DESC           S            120    inz
     D @DESC2          S             40    inz
     D
     D TOTAL01         S              7  0 INZ
     D TOTAL02         S              7  0 INZ
     D KEY01           S             13    INZ
     D
     D Program_Status SDS
     D  PR_PGMNAME       *PROC
     D  PR_JOBNAME           244    253
     D  PR_USERID            254    263
     D CMD             S             78    DIM(4) CTDATA
     D CMDLEN          S             15P 5 INZ(78)
     C
     C*---------------------------------------------------------------*
     C* MAINLINE                                                      *
     C*---------------------------------------------------------------*
     C*
     C                   EXSR      $SR001
     C                   EXSR      $LINCNT
     C                   EXCEPT    TOT_001
     C                   EXCEPT    TOT_002
     C                   EXSR      $SR002
     C
     C                   EXSR      $LINCNT
     C                   EXCEPT    TOT_001
     C                   MOVE      *ON           *INLR
     C                   RETURN
     C
     C*---------------------------------------------------------------*
     C* FIND MEMBERS IN FILE 1 NOT IN FILE 2.  THIS SUBROUTINE        *
     C* ALSO LOOKS FOR DIFFERENCES IN MEMBERS FOUND IN BOTH.          *
     C*---------------------------------------------------------------*
     C     $SR001        BEGSR
     C
     C     *LOVAL        SETLL     SRCCMPW1
     C                   READ      SRCCMPW1
     C                   READ      SRCCMPW2
     C
     C                   EXCEPT    HEADER1
     C
     C                   DOW       NOT %EOF(SRCCMPW1)
     C
     C     W1MLNAME      CHAIN     SRCCMPW2
     C
     C                   IF        NOT %FOUND(SRCCMPW2)
     C
     C
     C                   EVAL      @DESC2 = 'NOT FOUND IN ' +
     C                             %TRIM(W2MLLIB) + '/' + %TRIM(W2MLFILE)
     C                   EVAL      TOTAL01 = TOTAL01 + 1
     C                   EXSR      $LINCNT
     C                   EXCEPT    DTL_001
     C
     C                   ELSE
     C                   CALL      'SRCCMPC2'
     C                   PARM                    W1MLLIB
     C                   PARM                    W1MLFILE
     C                   PARM                    W2MLLIB
     C                   PARM                    W2MLFILE
     C                   PARM                    W1MLNAME
     C                   PARM                    W2MLNAME
     C                   EXSR      $SR003
     C                   ENDIF
     C                   READ      SRCCMPW1
     C
     C                   ENDDO
     C
     C                   ENDSR
     C     $SR002        BEGSR
     C
     C                   EVAL      LineCnt = 0                                  Set array index
     C                   EVAL      TOTAL01 = 0
     C     *LOVAL        SETLL     SRCCMPW2
     C                   READ      SRCCMPW2
     C                   READ      SRCCMPW1
     C
     C                   EVAL      @DESC2 = ' NOT FOUND IN ' +
     C                             %TRIM(W1MLLIB) + '/' + %TRIM(W1MLFILE)
     C                   EXCEPT    HEADER1
     C
     C                   DOW       NOT %EOF(SRCCMPW2)
     C     W2MLNAME      CHAIN     SRCCMPW1
     C                   IF        NOT %FOUND(SRCCMPW1)
     C                   EVAL      TOTAL01 = TOTAL01 + 1
     C                   EXSR      $LINCNT
     C                   EXCEPT    DTL_002
     C                   ENDIF
     C                   READ      SRCCMPW2
     C                   ENDDO
     C
     C                   ENDSR
     C*
     C*----------------------------------------------------------
     C*    $LINCNT  This routine checks the line counter and
     C*             prints report headers, as necessary.
     C*----------------------------------------------------------
     C*
     C     $LINCNT       BEGSR
     C*
     C                   IF        LineCnt > 50
     C                   EXCEPT    HEADER1                                      Print detail
     C                   EVAL      LineCnt = 0
     C                   ELSE
     C                   EVAL      LineCnt = LineCnt + 1                        Set array index
     C                   ENDIF
     C*
     C                   ENDSR
     C*
     C*
     C*---------------------------------------------------------------*
     C* CHECK CMPSRC REPORT TO SEE IF ANY DIFFERENCES WERE FOUND.     *
     C* DELETE REPORT IF NO DIFFERENCES.                              *
     C*---------------------------------------------------------------*
     C     $SR003        BEGSR
     C                   OPEN      SRCCMPW3
     C     KEY01         CHAIN     SRCCMPW3
     C                   IF        %FOUND(SRCCMPW3)
     C                   IF        ERRORS = ' 0'
     C                   CALL      'QCMDEXC'
     C                   PARM                    CMD(1)
     C                   PARM                    CMDLEN
     C                   ELSE
     C                   EVAL      @DESC2 = 'DIFFERENCES FOUND IN ' +
     C                             %TRIM(W2MLLIB) + '/' + %TRIM(W2MLFILE)
     C                   EVAL      TOTAL02 = TOTAL02 + 1
     C                   EXSR      $LINCNT
     C                   EXCEPT    DTL_001
     C
     C                   ENDIF
     C                   ENDIF
     C                   CLOSE     SRCCMPW3
     C                   ENDSR
     C*
     C*---------------------------------------------------------------*
     C* INITIAL SETUP                                                 *
     C*---------------------------------------------------------------*
     C     *INZSR        BEGSR
     C
     C                   EVAL      KEY01 = 'TOTAL CHANGES'
     C                   TIME                    TIME
     C
     C                   ENDSR
      *==========================================================
      *  Output Specifications
      *==========================================================
      *----------------------------------------------------------
      *  QPRINT  -  Audit report
      *----------------------------------------------------------
     OQPRINT    E            HEADER1     1  1 01
     O                       PR_USERID           10
     O                       TTL_001             77
     O                       TIME_DAT      Y    120
     O                                          126 'Page'
     O                       PAGE          Z    132
     O
     O          E            HEADER1        2
     O                                           06 'PgmId:'
     O                       PR_PGMNAME         +01
     O                       TTL_002             77
     O                       TIME_TIM           120 '0 :  :  '
     O
     O          E            HEADER1        1
     O                                            1 ' '
     O*                      @DESC               +1
     O          E            HEADER1        1
     O*                                             '1234567890'
     O                                           08 'MEMBER'
     O                                           19 'FILE'
     O                                           31 'LIBRARY'
     O
     O
     O          E            HEADER1        0
     O                       DASH_132           132
     O
     O          E            HEADER1        1
     O*                                             '1234567890'
     O                                           08 'NAME'
     O                                           19 'NAME'
     O                                           31 'NAME'
     O*----------------------
     O          E            DTL_001        1
     O                       W1MLNAME            10
     O                       W1MLFILE            22
     O                       W1MLLIB             34
     O                       @DESC2              +2
     O*----------------------
     O          E            DTL_002        1
     O                       W2MLNAME            10
     O                       W2MLFILE            22
     O                       W2MLLIB             34
     O                       @DESC2              +2
     O*----------------------
     O          E            TOT_001     2  1
     O                                           31 'Total Members not found:  '
     O                       TOTAL01       J    +01
     O*----------------------
     O          E            TOT_002     2  1
     O                                           31 '# of Members not the same:'
     O                       TOTAL02       J    +01
     O*----------------------
**CTDATA CMD
DLTSPLF FILE(QSYSPRT) SPLNBR(*LAST)