1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\AGGCELLS.PRG                  199805151018      PAGE:  1                +
          +---------------------------------------------------------------------------------------------+

       1  ******************************************************************************                     .\WPSRS\AGGCELLS.PRG
       2  *                                                                                                  .\WPSRS\AGGCELLS.PRG
       3  * PROGRAM NAME:              AggCells.PRG                                                          .\WPSRS\AGGCELLS.PRG
       4  *                                                                                                  .\WPSRS\AGGCELLS.PRG
       5  * PROGRAM PURPOSE:           To aggregate cells in the ETF that correspond to                      .\WPSRS\AGGCELLS.PRG
       6  *                            the current SEF record                                                .\WPSRS\AGGCELLS.PRG
       7  *                                                                                                  .\WPSRS\AGGCELLS.PRG
 -     8  * PROGRAMMER NAME:                                                                                 .\WPSRS\AGGCELLS.PRG
       9  *                                                                                                  .\WPSRS\AGGCELLS.PRG
 -    10  * PROGRAM DATE:              2/1/93                                                                .\WPSRS\AGGCELLS.PRG
      11  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      12  * PROGRAM INPUTS:            -----                                                                 .\WPSRS\AGGCELLS.PRG
      13  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      14  * PROGRAM OUTPUTS:           None                                                                  .\WPSRS\AGGCELLS.PRG
      15  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      16  * PROCESSING LOGIC:          -----                                                                 .\WPSRS\AGGCELLS.PRG
      17  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      18  * CALLING PROGRAMS:          RegEst.PRG                                                            .\WPSRS\AGGCELLS.PRG
      19  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      20  * PROGRAMS INVOKED:          N/A                                                                   .\WPSRS\AGGCELLS.PRG
      21  *                                                                                                  .\WPSRS\AGGCELLS.PRG
      22  ******************************************************************************                     .\WPSRS\AGGCELLS.PRG
      23                                                                                                     .\WPSRS\AGGCELLS.PRG
      24  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      25  * Function:   AggCells()                                                                           .\WPSRS\AGGCELLS.PRG
      26  * Purpose:    To aggregate cells in the ETF that correspond to the current                         .\WPSRS\AGGCELLS.PRG
      27  *             SEF record                                                                           .\WPSRS\AGGCELLS.PRG
      28  * Parameters: None                                                                                 .\WPSRS\AGGCELLS.PRG
      29  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      30  FUNCTION AGGCELLS()                                                                                .\WPSRS\AGGCELLS.PRG
      31                                                                                                     .\WPSRS\AGGCELLS.PRG
      32  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      33  * nWS  is the WEEKLY SAMPLE total based on the survey id, product supply type,                     .\WPSRS\AGGCELLS.PRG
      34  *      padd code, and prod code of the current SEF record                                          .\WPSRS\AGGCELLS.PRG
      35  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      36  LOCAL  nWS := 0                                                                                    .\WPSRS\AGGCELLS.PRG
      37                                                                                                     .\WPSRS\AGGCELLS.PRG
      38  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      39  * nWA  is the WEEKLY ACTUAL total based on the survey id, product supply type,                     .\WPSRS\AGGCELLS.PRG
      40  *      padd code, and prod code of the current SEF record                                          .\WPSRS\AGGCELLS.PRG
      41  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      42  LOCAL  nWA := 0                                                                                    .\WPSRS\AGGCELLS.PRG
      43                                                                                                     .\WPSRS\AGGCELLS.PRG
      44  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      45  * nWI  is the WEEKLY IMPUTE total based on the survey id, product supply type,                     .\WPSRS\AGGCELLS.PRG
      46  *      padd code, and prod code of the current SEF record                                          .\WPSRS\AGGCELLS.PRG
      47  *******************************************************************************                    .\WPSRS\AGGCELLS.PRG
      48  LOCAL  nWI := 0                                                                                    .\WPSRS\AGGCELLS.PRG
      49                                                                                                     .\WPSRS\AGGCELLS.PRG
      50  LOCAL cEmpty_Country   // is an empty string equal in length to ECF->CNTRY_CODE                    .\WPSRS\AGGCELLS.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\AGGCELLS.PRG                  199805151018      PAGE:  2                +
          +---------------------------------------------------------------------------------------------+

      51                                                                                                     .\WPSRS\AGGCELLS.PRG
      52  cEmpty_Country := SPACE(LEN(ETF->Cntry_Code))                                                      .\WPSRS\AGGCELLS.PRG
      53  SELECT ETF                                                                                         .\WPSRS\AGGCELLS.PRG
      54                                                                                                     .\WPSRS\AGGCELLS.PRG
      55  SEEK SEF->Rpt_Period + SEF->Survey_Id + SEF->Prod_Code + SEF->Pt_Sp_Type ;                         .\WPSRS\AGGCELLS.PRG
      56       + SEF->Padd_Code + cEmpty_Country                                                             .\WPSRS\AGGCELLS.PRG
      57                                                                                                     .\WPSRS\AGGCELLS.PRG
      58  IF FOUND()                                                                                         .\WPSRS\AGGCELLS.PRG
      59                                                                                                     .\WPSRS\AGGCELLS.PRG
      60      ***************************************************************************                    .\WPSRS\AGGCELLS.PRG
      61      * Sum all the records in the ETF that correspond to the current SEF record                     .\WPSRS\AGGCELLS.PRG
      62      * A record in the ETF corresponds to the current record in the SEF if they                     .\WPSRS\AGGCELLS.PRG
      63      * have equal values in all the Key fields                                                      .\WPSRS\AGGCELLS.PRG
      64      ***************************************************************************                    .\WPSRS\AGGCELLS.PRG
      65       DO WHILE ( SEF->Rpt_Period == ETF->Rpt_Period) .AND.  ;                                       .\WPSRS\AGGCELLS.PRG
      66                ( SEF->Survey_Id  == ETF->Survey_Id)   .AND.  ;                                      .\WPSRS\AGGCELLS.PRG
      67                ( SEF->Prod_Code  == ETF->Prod_Code)   .AND.  ;                                      .\WPSRS\AGGCELLS.PRG
      68                ( SEF->Pt_Sp_Type == ETF->Pt_Sp_Type)  .AND.  ;                                      .\WPSRS\AGGCELLS.PRG
      69                ( SEF->Padd_Code  == ETF->Padd_Code)   .AND.  ;                                      .\WPSRS\AGGCELLS.PRG
      70                ( cEmpty_Country   == ETF->Cntry_Code)                                               .\WPSRS\AGGCELLS.PRG
      71                                                                                                     .\WPSRS\AGGCELLS.PRG
      72      ***************************************************************************                    .\WPSRS\AGGCELLS.PRG
      73      * Add this ETF cell value to the weekly sample (nWS).  If the ETF record                       .\WPSRS\AGGCELLS.PRG
      74      * has gone through the imputation process then add the Imputed Value to                        .\WPSRS\AGGCELLS.PRG
      75      * the nWI variable.                                                                            .\WPSRS\AGGCELLS.PRG
      76      * If the ETF record has NOT gone through the imputation process, then add                      .\WPSRS\AGGCELLS.PRG
      77      * the reported quantity to the nWA variable.                                                   .\WPSRS\AGGCELLS.PRG
      78      ***************************************************************************                    .\WPSRS\AGGCELLS.PRG
      79       IF (ETF->Imp_Flag == "I")                                                                     .\WPSRS\AGGCELLS.PRG
      80           nWI := nWI + ETF->Imp_Value    // Add Imputed Value                                       .\WPSRS\AGGCELLS.PRG
      81       ELSE                                                                                          .\WPSRS\AGGCELLS.PRG
      82           nWA := nWA + ETF->Quantity      // Add Respondent Value                                   .\WPSRS\AGGCELLS.PRG
      83       ENDIF                                                                                         .\WPSRS\AGGCELLS.PRG
      84                                                                                                     .\WPSRS\AGGCELLS.PRG
      85       SKIP   // Look at the next record in the estimates temp file                                  .\WPSRS\AGGCELLS.PRG
      86                                                                                                     .\WPSRS\AGGCELLS.PRG
      87     ENDDO   // End while sef record equals etf record                                               .\WPSRS\AGGCELLS.PRG
      88                                                                                                     .\WPSRS\AGGCELLS.PRG
      89     nWS := nWA + nWI                                                                                .\WPSRS\AGGCELLS.PRG
      90     SEF->WA_VALUE := nWA                                                                            .\WPSRS\AGGCELLS.PRG
      91     SEF->WI_VALUE := nWI                                                                            .\WPSRS\AGGCELLS.PRG
      92                                                                                                     .\WPSRS\AGGCELLS.PRG
      93  ENDIF    // End if found                                                                           .\WPSRS\AGGCELLS.PRG
      94                                                                                                     .\WPSRS\AGGCELLS.PRG
      95  RETURN ( nWS )                                                                                     .\WPSRS\AGGCELLS.PRG
      96                                                                                                     .\WPSRS\AGGCELLS.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  1                +
          +---------------------------------------------------------------------------------------------+

       1  ******************************************************************************                     .\WPSRS\ANNUAL.PRG
       2  *                                                                                                  .\WPSRS\ANNUAL.PRG
       3  * PROGRAM NAME:              ANNUAL.PRG                                                            .\WPSRS\ANNUAL.PRG
       4  *                                                                                                  .\WPSRS\ANNUAL.PRG
       5  * PROGRAM PURPOSE:           Holds all of the functions that are needed to                         .\WPSRS\ANNUAL.PRG
 -     6  *                            update the WPSRS files when the annual data                           .\WPSRS\ANNUAL.PRG
       7  *                            become available.                                                     .\WPSRS\ANNUAL.PRG
       8  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -     9  * PROGRAMMER NAME:                                                                                 .\WPSRS\ANNUAL.PRG
      10  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -    11  * PROGRAM DATE:              6/20/93                                                               .\WPSRS\ANNUAL.PRG
      12  *                                                                                                  .\WPSRS\ANNUAL.PRG
      13  * PROGRAM INPUTS:            -----                                                                 .\WPSRS\ANNUAL.PRG
      14  *                                                                                                  .\WPSRS\ANNUAL.PRG
      15  * PROGRAM OUTPUTS:           None                                                                  .\WPSRS\ANNUAL.PRG
      16  *                                                                                                  .\WPSRS\ANNUAL.PRG
      17  * PROCESSING LOGIC:          -----                                                                 .\WPSRS\ANNUAL.PRG
      18  *                                                                                                  .\WPSRS\ANNUAL.PRG
      19  * CALLING PROGRAMS:                                                                                .\WPSRS\ANNUAL.PRG
      20  *                                                                                                  .\WPSRS\ANNUAL.PRG
      21  * PROGRAMS INVOKED:                                                                                .\WPSRS\ANNUAL.PRG
      22  *                                                                                                  .\WPSRS\ANNUAL.PRG
      23  ******************************************************************************                     .\WPSRS\ANNUAL.PRG
      24  *                                                                                                  .\WPSRS\ANNUAL.PRG
      25  * MODIFICATION LOG:                                                                                .\WPSRS\ANNUAL.PRG
      26  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -    27  *           MODIFICATION                                      PROGRAMMER   CM LOG                  .\WPSRS\ANNUAL.PRG
 -    28  * DATE      DESCRIPTION                                       INITIALS     NUMBER                  .\WPSRS\ANNUAL.PRG
      29  * ________  _________________                                 __________   ______                  .\WPSRS\ANNUAL.PRG
      30  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -    31  * 05/04/95  Updated CheckAnnFiles() and Ann_Pub_BS() to                                            .\WPSRS\ANNUAL.PRG
      32  *           reflect the new annual data being processed                                            .\WPSRS\ANNUAL.PRG
      33  *           for the Annual S1 table.                                                               .\WPSRS\ANNUAL.PRG
      34  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -    35  * 05/11/95  Updated the two REPLACE statements in the                                              .\WPSRS\ANNUAL.PRG
      36  *           BS_OOILS routine where Stk_Change was being                                            .\WPSRS\ANNUAL.PRG
 -    37  *           re-calculated.  The updates were implemented for                                       .\WPSRS\ANNUAL.PRG
      38  *           WR94-047, and the change simply includes dividing                                      .\WPSRS\ANNUAL.PRG
 -    39  *           the re-calculated number by the number of days in                                      .\WPSRS\ANNUAL.PRG
 -    40  *           the respective month.                                                                  .\WPSRS\ANNUAL.PRG
      41  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -    42  * 11/01/95  Updated ArcPubMnth() so that the December data from                                    .\WPSRS\ANNUAL.PRG
 -    43  *           two years ago is not removed from PUB_MNTH.  Only                                      .\WPSRS\ANNUAL.PRG
      44  *           data that is older then the December data of that                                      .\WPSRS\ANNUAL.PRG
 -    45  *           year should be removed.                                                                .\WPSRS\ANNUAL.PRG
      46  *                                                                                                  .\WPSRS\ANNUAL.PRG
      47  ******************************************************************************                     .\WPSRS\ANNUAL.PRG
      48                                                                                                     .\WPSRS\ANNUAL.PRG
      49  #include 'WPSRS.CH'                                                                                .\WPSRS\ANNUAL.PRG
      50  #include 'INKEY.CH'                                                                                .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  2                +
          +---------------------------------------------------------------------------------------------+

      51                                                                                                     .\WPSRS\ANNUAL.PRG
      52  STATIC aBackFiles  // Array holding the d_type and file of each backed up file                     .\WPSRS\ANNUAL.PRG
      53                                                                                                     .\WPSRS\ANNUAL.PRG
      54  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
      55  * Function:   CheckAnnFiles()                                                                      .\WPSRS\ANNUAL.PRG
      56  * Purpose:    Returns True if all the necessary files are present to do Annual                     .\WPSRS\ANNUAL.PRG
      57  *             processing. Returns False otherwise.                                                 .\WPSRS\ANNUAL.PRG
      58  * Parameters: aMissing == NIL when all files are present                                           .\WPSRS\ANNUAL.PRG
      59  *                      == LIST OF MISSING FILES when all files ARE NOT present                     .\WPSRS\ANNUAL.PRG
 -    60  * Parameters: aInvalid == NIL when all files contain the correct YYMM data                         .\WPSRS\ANNUAL.PRG
      61  *                      == LIST OF INVALID FILES when all files DO NOT contain                      .\WPSRS\ANNUAL.PRG
 -    62  *                         the correct YYMM data.                                                   .\WPSRS\ANNUAL.PRG
      63  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
      64  FUNCTION CheckAnnFiles(aMissing,aInvalid)                                                          .\WPSRS\ANNUAL.PRG
 *    65  LOCAL cOneYY     := GetYY( -1, "YY" ) // Year of Data to update                                    .\WPSRS\ANNUAL.PRG
      66  LOCAL nCnt       := 1                 // Temp Loop Counter                                         .\WPSRS\ANNUAL.PRG
 *    67  LOCAL cMM        := ""                // nCnt in a character string of length 2                    .\WPSRS\ANNUAL.PRG
      68  LOCAL lFiles_OK  := .T.               // True if all the Annual Files are present                  .\WPSRS\ANNUAL.PRG
      69  LOCAL cPath      := PREFIX("ANNUAL")  // Drive and Path of the input data                          .\WPSRS\ANNUAL.PRG
      70  LOCAL aDBFRetVal := {}                                                                             .\WPSRS\ANNUAL.PRG
      71  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
      72  LOCAL lBad_Data  := .F.                                                                            .\WPSRS\ANNUAL.PRG
      73                                                                                                     .\WPSRS\ANNUAL.PRG
      74  cDispMsg  := DrawBox(08,10,14,70,,.T.,.F.,.F.)                                                     .\WPSRS\ANNUAL.PRG
 *    75  Center(10,'Checking For Annual ' + GetYY( -1, "YYYY" ) + ' Data Files')                            .\WPSRS\ANNUAL.PRG
      76  Center(12, 'Please Wait ...' )                                                                     .\WPSRS\ANNUAL.PRG
      77                                                                                                     .\WPSRS\ANNUAL.PRG
 *    78  AADD( aDBFRetVal, UseDbf( 'TABLES', 'MONTHLY', 'MONTHLY', .T. ) )                                  .\WPSRS\ANNUAL.PRG
      79  AADD( aDBFRetVal, UseDbf( 'TABLES', 'PSRSTEMP', 'PSRSTEMP', .T. ) )                                .\WPSRS\ANNUAL.PRG
      80                                                                                                     .\WPSRS\ANNUAL.PRG
      81  *************************************************                                                  .\WPSRS\ANNUAL.PRG
      82  * If both databases were opened successfully ...                                                   .\WPSRS\ANNUAL.PRG
      83  *************************************************                                                  .\WPSRS\ANNUAL.PRG
      84  IF ASCAN( aDBFRetVal, .F. ) == 0                                                                   .\WPSRS\ANNUAL.PRG
      85                                                                                                     .\WPSRS\ANNUAL.PRG
      86     *************************************************                                               .\WPSRS\ANNUAL.PRG
      87     * If the user HAS NOT pressed ESCAPE ...                                                        .\WPSRS\ANNUAL.PRG
      88     *************************************************                                               .\WPSRS\ANNUAL.PRG
      89     IF ConfirmESC( .F. )  == .F.                                                                    .\WPSRS\ANNUAL.PRG
      90                                                                                                     .\WPSRS\ANNUAL.PRG
      91        **************************************************************                               .\WPSRS\ANNUAL.PRG
      92        * Verify that each 'MON' file exists in the ANNUAL directory                                 .\WPSRS\ANNUAL.PRG
      93        **************************************************************                               .\WPSRS\ANNUAL.PRG
      94        FOR nCnt := 1 TO 12                                                                          .\WPSRS\ANNUAL.PRG
 *    95           cMM := ALLTRIM( STR( nCnt ) )                                                             .\WPSRS\ANNUAL.PRG
 *    96           IF ( LEN( cMM ) == 1 )                                                                    .\WPSRS\ANNUAL.PRG
 *    97              cMM := "0" + cMM                                                                       .\WPSRS\ANNUAL.PRG
      98           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
      99                                                                                                     .\WPSRS\ANNUAL.PRG
     100           ****************************************************************                          .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  3                +
          +---------------------------------------------------------------------------------------------+

     101           * If a file is missing, add its filename to the array (aMissing)                          .\WPSRS\ANNUAL.PRG
     102           ****************************************************************                          .\WPSRS\ANNUAL.PRG
 *   103           IF .NOT. FILE( cPath + "MON" + cOneYY + cMM + ".DAT" )                                    .\WPSRS\ANNUAL.PRG
 *   104              AADD( aMissing, 'MON' + cOneYY + cMM + '.DAT' )                                        .\WPSRS\ANNUAL.PRG
     105              lFiles_OK := .F.                                                                       .\WPSRS\ANNUAL.PRG
     106                                                                                                     .\WPSRS\ANNUAL.PRG
     107           *********************************************************************                     .\WPSRS\ANNUAL.PRG
 -   108           * If the file exists, ensure that the YYMM is valid for every record                      .\WPSRS\ANNUAL.PRG
     109           *********************************************************************                     .\WPSRS\ANNUAL.PRG
     110           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     111              lBad_Data := .F.                                                                       .\WPSRS\ANNUAL.PRG
 *   112              SELECT MONTHLY                                                                         .\WPSRS\ANNUAL.PRG
     113              ZAP                                                                                    .\WPSRS\ANNUAL.PRG
 *   114              APPEND FROM ( cPath + "MON" + cOneYY + cMM + ".DAT" ) SDF                              .\WPSRS\ANNUAL.PRG
     115              GO TOP                                                                                 .\WPSRS\ANNUAL.PRG
     116              DO WHILE .NOT. EOF()                                                                   .\WPSRS\ANNUAL.PRG
     117                *********************************************************************                .\WPSRS\ANNUAL.PRG
 -   118                * If YYMM is invalid, add its filename to the array (aInvalid)                       .\WPSRS\ANNUAL.PRG
     119                *********************************************************************                .\WPSRS\ANNUAL.PRG
 *   120                IF ( MONTHLY->Rpt_Month <> (cOneYY + cMM) )                                          .\WPSRS\ANNUAL.PRG
     121                   lBad_Data := .T.                                                                  .\WPSRS\ANNUAL.PRG
     122                ENDIF                                                                                .\WPSRS\ANNUAL.PRG
 *   123                SELECT MONTHLY                                                                       .\WPSRS\ANNUAL.PRG
     124                SKIP                                                                                 .\WPSRS\ANNUAL.PRG
     125              ENDDO                                                                                  .\WPSRS\ANNUAL.PRG
     126              IF lBad_Data                                                                           .\WPSRS\ANNUAL.PRG
 *   127                 AADD( aInvalid, 'MON' + cOneYY + cMM + '.DAT' )                                     .\WPSRS\ANNUAL.PRG
     128                 lBad_Data := .F.                                                                    .\WPSRS\ANNUAL.PRG
     129                 lFiles_OK := .F.                                                                    .\WPSRS\ANNUAL.PRG
     130              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
     131           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     132        NEXT nCnt                                                                                    .\WPSRS\ANNUAL.PRG
     133                                                                                                     .\WPSRS\ANNUAL.PRG
     134        **************************************************************                               .\WPSRS\ANNUAL.PRG
     135        * Verify that each 'BS' file exists in the ANNUAL directory                                  .\WPSRS\ANNUAL.PRG
     136        **************************************************************                               .\WPSRS\ANNUAL.PRG
     137        FOR nCnt := 1 TO 12                                                                          .\WPSRS\ANNUAL.PRG
     138                                                                                                     .\WPSRS\ANNUAL.PRG
 *   139           cMM := ALLTRIM( STR( nCnt ) )                                                             .\WPSRS\ANNUAL.PRG
 *   140           IF ( LEN( cMM ) == 1 )                                                                    .\WPSRS\ANNUAL.PRG
 *   141              cMM := "0" + cMM                                                                       .\WPSRS\ANNUAL.PRG
     142           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     143                                                                                                     .\WPSRS\ANNUAL.PRG
     144           ****************************************************************                          .\WPSRS\ANNUAL.PRG
     145           * If a file is missing, add its filename to the array (aMissing)                          .\WPSRS\ANNUAL.PRG
     146           ****************************************************************                          .\WPSRS\ANNUAL.PRG
 *   147           IF .NOT. FILE( cPath + "BS" + cOneYY + cMM + ".DAT" )                                     .\WPSRS\ANNUAL.PRG
 *   148              AADD( aMissing, 'BS' + cOneYY + cMM + '.DAT' )                                         .\WPSRS\ANNUAL.PRG
     149              lFiles_OK := .F.                                                                       .\WPSRS\ANNUAL.PRG
     150                                                                                                     .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  4                +
          +---------------------------------------------------------------------------------------------+

     151           *********************************************************************                     .\WPSRS\ANNUAL.PRG
 -   152           * If the file exists, ensure that the YYMM is valid for every record                      .\WPSRS\ANNUAL.PRG
     153           *********************************************************************                     .\WPSRS\ANNUAL.PRG
     154           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     155              lBad_Data := .F.                                                                       .\WPSRS\ANNUAL.PRG
     156              SELECT PSRSTEMP                                                                        .\WPSRS\ANNUAL.PRG
     157              ZAP                                                                                    .\WPSRS\ANNUAL.PRG
 *   158              APPEND FROM ( cPath + "BS" + cOneYY + cMM + ".DAT" ) SDF                               .\WPSRS\ANNUAL.PRG
     159              GO TOP                                                                                 .\WPSRS\ANNUAL.PRG
     160              DO WHILE .NOT. EOF()                                                                   .\WPSRS\ANNUAL.PRG
     161                *********************************************************************                .\WPSRS\ANNUAL.PRG
 -   162                * If YYMM is invalid, add its filename to the array (aInvalid)                       .\WPSRS\ANNUAL.PRG
     163                *********************************************************************                .\WPSRS\ANNUAL.PRG
 *   164                IF ( PSRSTEMP->Rpt_Month <> (cOneYY + cMM) )                                         .\WPSRS\ANNUAL.PRG
     165                   lBad_Data := .T.                                                                  .\WPSRS\ANNUAL.PRG
     166                ENDIF                                                                                .\WPSRS\ANNUAL.PRG
     167                SELECT PSRSTEMP                                                                      .\WPSRS\ANNUAL.PRG
     168                SKIP                                                                                 .\WPSRS\ANNUAL.PRG
     169              ENDDO                                                                                  .\WPSRS\ANNUAL.PRG
     170              IF lBad_Data                                                                           .\WPSRS\ANNUAL.PRG
 *   171                 AADD( aInvalid, 'BS' + cOneYY + cMM + '.DAT' )                                      .\WPSRS\ANNUAL.PRG
     172                 lBad_Data := .F.                                                                    .\WPSRS\ANNUAL.PRG
     173                 lFiles_OK := .F.                                                                    .\WPSRS\ANNUAL.PRG
     174              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
     175           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     176        NEXT nCnt                                                                                    .\WPSRS\ANNUAL.PRG
     177                                                                                                     .\WPSRS\ANNUAL.PRG
 *   178        IF SELECT('MONTHLY')  != 0;  MONTHLY->(DBCLOSEAREA());  ENDIF                                .\WPSRS\ANNUAL.PRG
     179        IF SELECT('PSRSTEMP') != 0;  PSRSTEMP->(DBCLOSEAREA()); ENDIF                                .\WPSRS\ANNUAL.PRG
     180                                                                                                     .\WPSRS\ANNUAL.PRG
     181     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     182        lFiles_OK := .F.                                                                             .\WPSRS\ANNUAL.PRG
     183     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     184                                                                                                     .\WPSRS\ANNUAL.PRG
     185  ELSE                                                                                               .\WPSRS\ANNUAL.PRG
 *   186     IF SELECT('MONTHLY')  != 0;  MONTHLY->(DBCLOSEAREA());  ENDIF                                   .\WPSRS\ANNUAL.PRG
     187     IF SELECT('PSRSTEMP') != 0;  PSRSTEMP->(DBCLOSEAREA()); ENDIF                                   .\WPSRS\ANNUAL.PRG
     188     lFiles_Ok := .F.                                                                                .\WPSRS\ANNUAL.PRG
     189  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     190                                                                                                     .\WPSRS\ANNUAL.PRG
     191  RESTSCREEN(08,10,14,70,cDispMsg)                                                                   .\WPSRS\ANNUAL.PRG
     192                                                                                                     .\WPSRS\ANNUAL.PRG
     193  RETURN( lFiles_OK )                                                                                .\WPSRS\ANNUAL.PRG
     194                                                                                                     .\WPSRS\ANNUAL.PRG
     195                                                                                                     .\WPSRS\ANNUAL.PRG
     196  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
     197  * Function:   ANN_PUB_BS()                                                                         .\WPSRS\ANNUAL.PRG
 -   198  * Purpose:    1) To delete the oldest records from the BS_MONTH, and then                          .\WPSRS\ANNUAL.PRG
 -   199  *                update it and PUB_MNTH with the new MONyymm.DAT annual data.                      .\WPSRS\ANNUAL.PRG
 -   200  *             2) To update PUB_PSRS with the new BSyymm.DAT annual data.                           .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  5                +
          +---------------------------------------------------------------------------------------------+

     201  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     202  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
     203  FUNCTION ANN_PUB_BS()                                                                              .\WPSRS\ANNUAL.PRG
 *   204  LOCAL cThreeYY  := GetYY( -3, "YY" )  // Three Years Ago in "YY" format                            .\WPSRS\ANNUAL.PRG
     205  LOCAL cDispMsg  := ""                                                                              .\WPSRS\ANNUAL.PRG
 *   206  LOCAL cArcBs    := PREFIX("ARC") + "BSMT" + GetYY(-3,"YYYY") + ".DBF" //BS_Month                   .\WPSRS\ANNUAL.PRG
 *   207  LOCAL cPath     := PREFIX("ANNUAL")      // Drive and path of the monthly data                     .\WPSRS\ANNUAL.PRG
 *   208  LOCAL cOneYY    := GetYY( -1, "YY" )   // Year of Data to update                                   .\WPSRS\ANNUAL.PRG
 *   209  LOCAL nCnt      := 1              // Temp Loop Counter, represents Months                          .\WPSRS\ANNUAL.PRG
 *   210  LOCAL cMM       := ""             // nCnt in a character string of length 2                        .\WPSRS\ANNUAL.PRG
 *   211  LOCAL cYYMM                       // := cOneYY + cMM                                               .\WPSRS\ANNUAL.PRG
     212  LOCAL nMonWarn    := 0            // Number of warnings for each 'MON' input text file             .\WPSRS\ANNUAL.PRG
     213  LOCAL nBSWarn     := 0            // Number of warnings for each 'BS' input text file              .\WPSRS\ANNUAL.PRG
     214  LOCAL nTotMonRecs := 0            // Number of records in each 'MON' input text file               .\WPSRS\ANNUAL.PRG
     215  LOCAL nTotBSRecs  := 0            // Number of records in each 'BS' input text file                .\WPSRS\ANNUAL.PRG
 *   216  LOCAL nBsRecs     := 0            // Number of BS_MONTH records overwritten                        .\WPSRS\ANNUAL.PRG
     217  LOCAL nPubRecs    := 0            // Number of PUB_MNTH records overwritten                        .\WPSRS\ANNUAL.PRG
     218  LOCAL nPSRSRecs   := 0            // Number of PUB_PSRS records overwritten                        .\WPSRS\ANNUAL.PRG
     219  LOCAL aMonStatus  := {}           // Array containing MON portion of status report                 .\WPSRS\ANNUAL.PRG
     220  LOCAL aBSStatus   := {}           // Array containing BS portion of status report                  .\WPSRS\ANNUAL.PRG
 *   221  LOCAL aMonth      := { 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', ;                          .\WPSRS\ANNUAL.PRG
     222                         'AUG', 'SEP', 'OCT', 'NOV', 'DEC' }                                         .\WPSRS\ANNUAL.PRG
 *   223  LOCAL cRptName   := PREFIX("REPORT") + "ANN" + GetYY(-1,"YYYY") + ".RPT"                           .\WPSRS\ANNUAL.PRG
     224  LOCAL nPage      := 0             // Current page report number                                    .\WPSRS\ANNUAL.PRG
     225  LOCAL cHead      := ""            // Header text for the top of each report page                   .\WPSRS\ANNUAL.PRG
     226  LOCAL cLine1     := ""            // Line 1 text for the top of each report page                   .\WPSRS\ANNUAL.PRG
     227  LOCAL cLine2     := ""            // Line 2 text for the top of each report page                   .\WPSRS\ANNUAL.PRG
     228  LOCAL cLine3     := ""            // Line 3 text for the top of each report page                   .\WPSRS\ANNUAL.PRG
     229  LOCAL cLine4     := ""            // Line 4 text for the top of each report page                   .\WPSRS\ANNUAL.PRG
 *   230  LOCAL nPrior     := 0             // Prior End of Month Other Oil Stocks number                    .\WPSRS\ANNUAL.PRG
     231  LOCAL lContinue  := .T.           // Set to false if the user aborts the process                   .\WPSRS\ANNUAL.PRG
     232  LOCAL aDBFRetVal := {}                                                                             .\WPSRS\ANNUAL.PRG
     233  LOCAL cProdCode  := SPACE(3)                                                                       .\WPSRS\ANNUAL.PRG
     234  LOCAL cSuppType  := SPACE(4)                                                                       .\WPSRS\ANNUAL.PRG
     235  LOCAL cPaddCode  := SPACE(3)                                                                       .\WPSRS\ANNUAL.PRG
     236  LOCAL nLineCount := 0                                                                              .\WPSRS\ANNUAL.PRG
     237                                                                                                     .\WPSRS\ANNUAL.PRG
     238  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     239                                                                                                     .\WPSRS\ANNUAL.PRG
     240     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
 -   241     * Make a backup copy of the BS_MONTH.DBF, BS_OOILS.DBF, PUB_MNTH.DBF,                           .\WPSRS\ANNUAL.PRG
     242     * PUB_PSRS.DBF and their associated indexes to the backup directory.                            .\WPSRS\ANNUAL.PRG
     243     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
 *   244     aBackFiles := { {"BS","BS_MONTH"}, {"BS","BS_OOILS"}, ;                                         .\WPSRS\ANNUAL.PRG
     245                     {"PUB","PUB_MNTH"}, {"PUB","PUB_PSRS"} }                                        .\WPSRS\ANNUAL.PRG
     246     LanToBkup( aBackFiles )                                                                         .\WPSRS\ANNUAL.PRG
     247                                                                                                     .\WPSRS\ANNUAL.PRG
     248     *******************************************************************************                 .\WPSRS\ANNUAL.PRG
     249     * Open all the necessary database files                                                         .\WPSRS\ANNUAL.PRG
     250     *******************************************************************************                 .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  6                +
          +---------------------------------------------------------------------------------------------+

 *   251     AADD( aDBFRetVal, UseDbf( 'BS', 'BS_MONTH', 'BS_MONTH', .T. ) )                                 .\WPSRS\ANNUAL.PRG
     252     AADD( aDBFRetVal, UseDbf( 'PUB', 'PUB_MNTH', 'PUB_MNTH', .T. ) )                                .\WPSRS\ANNUAL.PRG
 *   253     AADD( aDBFRetVal, UseDbf( 'BS', 'MONTHKEY', 'MONTHKEY', .F. ) )                                 .\WPSRS\ANNUAL.PRG
     254     AADD( aDBFRetVal, UseDbf( 'BS', 'BS_OOILS', 'BS_OOILS', .T. ) )                                 .\WPSRS\ANNUAL.PRG
 *   255     AADD( aDBFRetVal, UseDbf( 'TABLES', 'MONTHLY', 'MONTHLY', .T. ) )                               .\WPSRS\ANNUAL.PRG
     256     AADD( aDBFRetVal, UseDbf( 'PUB', 'PUB_PSRS', 'PUB_PSRS', .T. ) )                                .\WPSRS\ANNUAL.PRG
     257     AADD( aDBFRetVal, UseDbf( 'TABLES', 'PSRSTEMP', 'PSRSTEMP', .T. ) )                             .\WPSRS\ANNUAL.PRG
     258     IF ASCAN( aDBFRetVal, .F. ) == 0                                                                .\WPSRS\ANNUAL.PRG
     259        lContinue := .T.                                                                             .\WPSRS\ANNUAL.PRG
     260     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     261        lContinue := .F.                                                                             .\WPSRS\ANNUAL.PRG
     262        AnnUpClose()       // Close all files that were opened                                       .\WPSRS\ANNUAL.PRG
     263     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     264                                                                                                     .\WPSRS\ANNUAL.PRG
     265     IF ConfirmESC( .F. ) == .F.                                                                     .\WPSRS\ANNUAL.PRG
     266        lContinue := .T.                                                                             .\WPSRS\ANNUAL.PRG
     267     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     268        lContinue := .F.                                                                             .\WPSRS\ANNUAL.PRG
     269        cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.F.)                                               .\WPSRS\ANNUAL.PRG
     270        Center(10,'Aborting Annual Procedures and Restoring Original Files')                         .\WPSRS\ANNUAL.PRG
     271        Center(12, 'Please Wait ...' )                                                               .\WPSRS\ANNUAL.PRG
     272        AnnUpClose()       // Close all files that were opened                                       .\WPSRS\ANNUAL.PRG
     273        BkupToLan( aBackFiles )                                                                      .\WPSRS\ANNUAL.PRG
     274        DelBkup( aBackFiles )                                                                        .\WPSRS\ANNUAL.PRG
     275        RESTSCREEN(07,10,15,70,cDispMsg)                                                             .\WPSRS\ANNUAL.PRG
     276     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     277                                                                                                     .\WPSRS\ANNUAL.PRG
     278  ELSE                                                                                               .\WPSRS\ANNUAL.PRG
     279     lContinue := .F.                                                                                .\WPSRS\ANNUAL.PRG
     280  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     281                                                                                                     .\WPSRS\ANNUAL.PRG
     282                                                                                                     .\WPSRS\ANNUAL.PRG
     283  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     284     ***********************************************************************                         .\WPSRS\ANNUAL.PRG
 -   285     * Archive records from the BS_MONTH.DBF from three years ago                                    .\WPSRS\ANNUAL.PRG
     286     ***********************************************************************                         .\WPSRS\ANNUAL.PRG
     287     IF .NOT. FILE( cArcBs )                                                                         .\WPSRS\ANNUAL.PRG
     288        cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                               .\WPSRS\ANNUAL.PRG
     289        Center(08, ' Annual Procedures In Progress ' )                                               .\WPSRS\ANNUAL.PRG
 *   290        Center(10, 'Archiving the oldest records from BS_MONTH.DBF')                                 .\WPSRS\ANNUAL.PRG
     291        Center(12, 'Please Wait ...' )                                                               .\WPSRS\ANNUAL.PRG
 *   292        SELECT BS_MONTH                                                                              .\WPSRS\ANNUAL.PRG
 *   293        SEEK cThreeYY                                                                                .\WPSRS\ANNUAL.PRG
 *   294        COPY TO ( cArcBs ) FOR ( LEFT( BS_MONTH->Rpt_Month, 2 )  == cThreeYY )                       .\WPSRS\ANNUAL.PRG
     295        RESTSCREEN(07,10,15,70,cDispMsg)                                                             .\WPSRS\ANNUAL.PRG
     296     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     297                                                                                                     .\WPSRS\ANNUAL.PRG
     298     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
 -   299     * Delete records from the BS_MONTH.DBF from three years ago                                     .\WPSRS\ANNUAL.PRG
     300     ***************************************************************************                     .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  7                +
          +---------------------------------------------------------------------------------------------+

     301     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     302     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
 *   303     Center(10, 'Deleting the oldest records from BS_MONTH.DBF')                                     .\WPSRS\ANNUAL.PRG
     304     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
 *   305     SELECT BS_MONTH                                                                                 .\WPSRS\ANNUAL.PRG
 *   306     SEEK cThreeYY                                                                                   .\WPSRS\ANNUAL.PRG
 *   307     DELETE ALL FOR (  LEFT( BS_MONTH->Rpt_Month, 2 )  == cThreeYY )                                 .\WPSRS\ANNUAL.PRG
     308     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     309     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     310                                                                                                     .\WPSRS\ANNUAL.PRG
     311     IF ConfirmESC( .F. ) == .F.                                                                     .\WPSRS\ANNUAL.PRG
     312        lContinue := .T.                                                                             .\WPSRS\ANNUAL.PRG
     313     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     314        lContinue := .F.                                                                             .\WPSRS\ANNUAL.PRG
     315        cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.F.)                                               .\WPSRS\ANNUAL.PRG
     316        Center(10,'Aborting Annual Procedures and Restoring Original Files')                         .\WPSRS\ANNUAL.PRG
     317        Center(12, 'Please Wait ...' )                                                               .\WPSRS\ANNUAL.PRG
     318        AnnUpClose()       // Close all files that were opened                                       .\WPSRS\ANNUAL.PRG
     319        BkupToLan( aBackFiles )                                                                      .\WPSRS\ANNUAL.PRG
     320        DelBkup( aBackFiles )                                                                        .\WPSRS\ANNUAL.PRG
     321        RESTSCREEN(07,10,15,70,cDispMsg)                                                             .\WPSRS\ANNUAL.PRG
     322     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     323  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     324                                                                                                     .\WPSRS\ANNUAL.PRG
     325                                                                                                     .\WPSRS\ANNUAL.PRG
     326  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     327     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
 -   328     * Display a message to the screen explaining which files are being updated                      .\WPSRS\ANNUAL.PRG
     329     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
     330     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     331     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
     332     Center(10, 'Updating the PUB/BS files with new annual data for')                                .\WPSRS\ANNUAL.PRG
     333                                                                                                     .\WPSRS\ANNUAL.PRG
     334     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
 -   335     * Create a report named ANNyymm.RPT that provides detailed infromation for                      .\WPSRS\ANNUAL.PRG
 -   336     * any possible update conflicts.                                                                .\WPSRS\ANNUAL.PRG
     337     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
     338     SET PRINTER TO &cRptName                                                                        .\WPSRS\ANNUAL.PRG
     339     SET DEVICE TO PRINT                                                                             .\WPSRS\ANNUAL.PRG
     340     SET PRINTER ON                                                                                  .\WPSRS\ANNUAL.PRG
     341     SET CONSOLE OFF                                                                                 .\WPSRS\ANNUAL.PRG
     342                                                                                                     .\WPSRS\ANNUAL.PRG
     343     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
 -   344     * Replace values in PUB_MNTH.DBF and BS_MONTH.DBF                                               .\WPSRS\ANNUAL.PRG
     345     ***************************************************************************                     .\WPSRS\ANNUAL.PRG
     346     nCnt := 1       // nCnt represents JAN to DEC.                                                  .\WPSRS\ANNUAL.PRG
     347     DO WHILE ( nCnt <= 12 ) .AND. lContinue                                                         .\WPSRS\ANNUAL.PRG
     348                                                                                                     .\WPSRS\ANNUAL.PRG
     349        SET DEVICE TO SCREEN             // Direct the output to the screen                          .\WPSRS\ANNUAL.PRG
 *   350        Center(12, SPACE(1)+aMonth[nCnt]+SPACE(1)+GetYY( -1, "YYYY" )+SPACE(3) )                     .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  8                +
          +---------------------------------------------------------------------------------------------+

     351        SET DEVICE TO PRINTER            // Direct the output back to the report                     .\WPSRS\ANNUAL.PRG
 *   352        cMM := ALLTRIM( STR( nCnt ) )                                                                .\WPSRS\ANNUAL.PRG
 *   353        IF ( LEN( cMM ) == 1 )                                                                       .\WPSRS\ANNUAL.PRG
 *   354           cMM := "0" + cMM                                                                          .\WPSRS\ANNUAL.PRG
     355        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
 *   356        cYYMM := cOneYY + cMM            // i.e. "9302" for FEB 1993                                 .\WPSRS\ANNUAL.PRG
 *   357        SELECT MONTHLY                                                                               .\WPSRS\ANNUAL.PRG
     358        ZAP                                                                                          .\WPSRS\ANNUAL.PRG
 *   359        APPEND FROM ( cPath + "MON" + cYYMM + ".DAT" ) SDF  // i.e. "MON9302.DAT"                    .\WPSRS\ANNUAL.PRG
     360        nTotMonRecs := RECCOUNT()                                                                    .\WPSRS\ANNUAL.PRG
     361        SELECT PSRSTEMP                                                                              .\WPSRS\ANNUAL.PRG
     362        ZAP                                                                                          .\WPSRS\ANNUAL.PRG
 *   363        APPEND FROM ( cPath + "BS" + cYYMM + ".DAT" ) SDF   // i.e. "BS9302.DAT"                     .\WPSRS\ANNUAL.PRG
     364        nTotBSRecs := RECCOUNT()                                                                     .\WPSRS\ANNUAL.PRG
     365        nMonWarn   := 0                                                                              .\WPSRS\ANNUAL.PRG
     366        nBSWarn    := 0                                                                              .\WPSRS\ANNUAL.PRG
     367        nBsRecs    := 0                                                                              .\WPSRS\ANNUAL.PRG
     368        nPubRecs   := 0                                                                              .\WPSRS\ANNUAL.PRG
     369        nPSRSRecs  := 0                                                                              .\WPSRS\ANNUAL.PRG
     370                                                                                                     .\WPSRS\ANNUAL.PRG
     371        **************************************************************************                   .\WPSRS\ANNUAL.PRG
 -   372        * Update the PUB_MNTH file                                                                   .\WPSRS\ANNUAL.PRG
     373        **************************************************************************                   .\WPSRS\ANNUAL.PRG
     374        IF nCnt == 1 .OR. ( nLineCount >= nPAGE_BREAK )                                              .\WPSRS\ANNUAL.PRG
 *   375           cHead := "ANNUAL UPDATE STATUS REPORT"                                                    .\WPSRS\ANNUAL.PRG
 *   376           cLine1 := "ANNUAL UPDATE DATA WAS NOT FOUND FOR THE FOLLOWING RECORDS:"                   .\WPSRS\ANNUAL.PRG
     377           cLine2 := "             RPT     PROD    SUPP    PADD"                                     .\WPSRS\ANNUAL.PRG
 *   378           cLine3 := "DATABASE    MONTH    CODE    TYPE    CODE    OTHER DATA (WHEN APPLICABLE)"     .\WPSRS\ANNUAL.PRG
     379           cLine4 := "========    =====    ====    ====    ====    ============================"     .\WPSRS\ANNUAL.PRG
     380           EJECT                                                                                     .\WPSRS\ANNUAL.PRG
     381           nLineCount := 0                                                                           .\WPSRS\ANNUAL.PRG
     382           @ 2,1 SAY ""                                                                              .\WPSRS\ANNUAL.PRG
     383           RptHeader( cHead, ++nPage )                                                               .\WPSRS\ANNUAL.PRG
     384           @ PROW()+3,1 SAY cLine1                                                                   .\WPSRS\ANNUAL.PRG
     385           @ PROW()+2,1 SAY cLine2                                                                   .\WPSRS\ANNUAL.PRG
     386           @ PROW()+1,1 SAY cLine3                                                                   .\WPSRS\ANNUAL.PRG
     387           @ PROW()+1,1 SAY cLine4                                                                   .\WPSRS\ANNUAL.PRG
     388           nLineCount := nLineCount + 11                                                             .\WPSRS\ANNUAL.PRG
     389        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     390        SELECT PUB_MNTH                                                                              .\WPSRS\ANNUAL.PRG
 *   391        SEEK cYYMM                                                                                   .\WPSRS\ANNUAL.PRG
 *   392        DO WHILE ( PUB_MNTH->Rpt_Month == cYYMM )                                                    .\WPSRS\ANNUAL.PRG
     393                                                                                                     .\WPSRS\ANNUAL.PRG
     394           ****************************************************************                          .\WPSRS\ANNUAL.PRG
     395           * If the current record being processed matches any of the                                .\WPSRS\ANNUAL.PRG
     396           * key identifier combinations listed below, then reassign                                 .\WPSRS\ANNUAL.PRG
     397           * the Prod Code, Supply Type, and Padd Code before searching                              .\WPSRS\ANNUAL.PRG
 -   398           * for it in MONTHLY.DBF.  The key identifiers listed below                                .\WPSRS\ANNUAL.PRG
     399           * are those that were renamed in efforts to keep them in sync                             .\WPSRS\ANNUAL.PRG
 -   400           * with PUB_WKLY.DBF (see Monthly procedures).                                             .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE:  9                +
          +---------------------------------------------------------------------------------------------+

     401           ****************************************************************                          .\WPSRS\ANNUAL.PRG
     402           DO CASE                                                                                   .\WPSRS\ANNUAL.PRG
     403              CASE PUB_MNTH->Prod_Code  == '050'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     404                   PUB_MNTH->Pt_Sp_Type == 'INPT' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     405                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     406                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     407                 cSuppType := 'NINP'                                                                 .\WPSRS\ANNUAL.PRG
     408                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     409              CASE PUB_MNTH->Prod_Code  == '050'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     410                   PUB_MNTH->Pt_Sp_Type == 'ESTO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     411                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     412                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     413                 cSuppType := 'XSPR'                                                                 .\WPSRS\ANNUAL.PRG
     414                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     415              CASE PUB_MNTH->Prod_Code  == '999'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     416                   PUB_MNTH->Pt_Sp_Type == 'ESTO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     417                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     418                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     419                 cSuppType := 'XSPR'                                                                 .\WPSRS\ANNUAL.PRG
     420                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     421              CASE PUB_MNTH->Prod_Code  == '999'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     422                   PUB_MNTH->Pt_Sp_Type == 'TSTO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     423                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     424                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     425                 cSuppType := 'SPRO'                                                                 .\WPSRS\ANNUAL.PRG
     426                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     427              CASE PUB_MNTH->Prod_Code  == '050'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     428                   PUB_MNTH->Pt_Sp_Type == 'TSTO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     429                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     430                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     431                 cSuppType := 'ESTT'                                                                 .\WPSRS\ANNUAL.PRG
     432                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     433              CASE PUB_MNTH->Prod_Code  == '020'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     434                   PUB_MNTH->Pt_Sp_Type == 'SPRI' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     435                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     436                 cProdCode := '050'                                                                  .\WPSRS\ANNUAL.PRG
     437                 cSuppType := 'SPRO'                                                                 .\WPSRS\ANNUAL.PRG
     438                 cPaddCode := '000'                                                                  .\WPSRS\ANNUAL.PRG
     439              CASE PUB_MNTH->Prod_Code  == '020'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     440                   PUB_MNTH->Pt_Sp_Type == 'IMPT' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     441                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     442                 cProdCode := '050'                                                                  .\WPSRS\ANNUAL.PRG
     443                 cSuppType := PUB_MNTH->Pt_Sp_Type                                                   .\WPSRS\ANNUAL.PRG
     444                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     445              CASE PUB_MNTH->Prod_Code  == '020'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     446                   PUB_MNTH->Pt_Sp_Type == 'TIMP' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     447                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     448                 cProdCode := '802'                                                                  .\WPSRS\ANNUAL.PRG
     449                 cSuppType := 'OTHR'                                                                 .\WPSRS\ANNUAL.PRG
     450                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 10                +
          +---------------------------------------------------------------------------------------------+

     451              CASE PUB_MNTH->Prod_Code  == '999'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     452                   PUB_MNTH->Pt_Sp_Type == 'TSTC' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     453                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     454                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     455                 cSuppType := 'STKC'                                                                 .\WPSRS\ANNUAL.PRG
     456                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     457              CASE PUB_MNTH->Prod_Code  == '050'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     458                   PUB_MNTH->Pt_Sp_Type == 'TSTC' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     459                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     460                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     461                 cSuppType := 'STKC'                                                                 .\WPSRS\ANNUAL.PRG
     462                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     463              CASE PUB_MNTH->Prod_Code  == '999'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     464                   PUB_MNTH->Pt_Sp_Type == 'TIMP' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     465                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     466                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     467                 cSuppType := 'IMPT'                                                                 .\WPSRS\ANNUAL.PRG
     468                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     469              CASE PUB_MNTH->Prod_Code  == '010'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     470                   PUB_MNTH->Pt_Sp_Type == 'FPRO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     471                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     472                 cProdCode := '050'                                                                  .\WPSRS\ANNUAL.PRG
     473                 cSuppType := 'GPRO'                                                                 .\WPSRS\ANNUAL.PRG
     474                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     475              CASE PUB_MNTH->Prod_Code  == '701'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     476                   PUB_MNTH->Pt_Sp_Type == 'FPRO' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     477                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     478                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     479                 cSuppType := 'NPRO'                                                                 .\WPSRS\ANNUAL.PRG
     480                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     481              CASE PUB_MNTH->Prod_Code  == '712'  .AND. ;                                            .\WPSRS\ANNUAL.PRG
     482                   PUB_MNTH->Pt_Sp_Type == 'NSPL' .AND. ;                                            .\WPSRS\ANNUAL.PRG
     483                   PUB_MNTH->Padd_Code  == '999'                                                     .\WPSRS\ANNUAL.PRG
     484                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     485                 cSuppType := 'NPRO'                                                                 .\WPSRS\ANNUAL.PRG
     486                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     487              OTHERWISE                                                                              .\WPSRS\ANNUAL.PRG
     488                 cProdCode := PUB_MNTH->Prod_Code                                                    .\WPSRS\ANNUAL.PRG
     489                 cSuppType := PUB_MNTH->Pt_Sp_Type                                                   .\WPSRS\ANNUAL.PRG
     490                 cPaddCode := PUB_MNTH->Padd_Code                                                    .\WPSRS\ANNUAL.PRG
     491           ENDCASE                                                                                   .\WPSRS\ANNUAL.PRG
 *   492           SELECT MONTHLY                                                                            .\WPSRS\ANNUAL.PRG
     493           SEEK cProdCode + cSuppType + cPaddCode                                                    .\WPSRS\ANNUAL.PRG
     494           IF FOUND()                                                                                .\WPSRS\ANNUAL.PRG
     495              IF cProdCode == '717' .AND. cSuppType == 'STKC' .AND. cPaddCode == '999'               .\WPSRS\ANNUAL.PRG
 *   496                 REPLACE PUB_MNTH->Value WITH ( MONTHLY->Value * -1 )                                .\WPSRS\ANNUAL.PRG
     497              ELSE                                                                                   .\WPSRS\ANNUAL.PRG
 *   498                 REPLACE PUB_MNTH->Value WITH MONTHLY->Value                                         .\WPSRS\ANNUAL.PRG
     499              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
     500              ++nPubRecs                                                                             .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 11                +
          +---------------------------------------------------------------------------------------------+

     501           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     502              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     503              * Record should have been found. display a warning message                             .\WPSRS\ANNUAL.PRG
     504              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     505              ++nMonWarn                                                                             .\WPSRS\ANNUAL.PRG
     506              IF ( nLineCount >= nPAGE_BREAK )                                                       .\WPSRS\ANNUAL.PRG
     507                  EJECT                                                                              .\WPSRS\ANNUAL.PRG
     508                  nLineCount := 0                                                                    .\WPSRS\ANNUAL.PRG
     509                  @ 2,1 SAY ""                                                                       .\WPSRS\ANNUAL.PRG
     510                  RptHeader( cHead, ++nPage )                                                        .\WPSRS\ANNUAL.PRG
     511                  @ PROW()+3,1 SAY cLine1                                                            .\WPSRS\ANNUAL.PRG
     512                  @ PROW()+2,1 SAY cLine2                                                            .\WPSRS\ANNUAL.PRG
     513                  @ PROW()+1,1 SAY cLine3                                                            .\WPSRS\ANNUAL.PRG
     514                  @ PROW()+1,1 SAY cLine4                                                            .\WPSRS\ANNUAL.PRG
     515                  nLineCount := nLineCount + 11                                                      .\WPSRS\ANNUAL.PRG
     516              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
     517              @ PROW()+1,01 SAY "PUB_MNTH"                                                           .\WPSRS\ANNUAL.PRG
 *   518              @ PROW(),  13 SAY PUB_MNTH->Rpt_Month                                                  .\WPSRS\ANNUAL.PRG
     519              @ PROW(),  22 SAY PUB_MNTH->Prod_Code                                                  .\WPSRS\ANNUAL.PRG
     520              @ PROW(),  30 SAY PUB_MNTH->Pt_Sp_Type                                                 .\WPSRS\ANNUAL.PRG
     521              @ PROW(),  38 SAY PUB_MNTH->Padd_Code                                                  .\WPSRS\ANNUAL.PRG
     522              nLineCount := nLineCount + 1                                                           .\WPSRS\ANNUAL.PRG
     523           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     524           SELECT PUB_MNTH                                                                           .\WPSRS\ANNUAL.PRG
     525           SKIP                                                                                      .\WPSRS\ANNUAL.PRG
 *   526        ENDDO  // End While cYYMM == PUB_MNTH report month                                           .\WPSRS\ANNUAL.PRG
     527                                                                                                     .\WPSRS\ANNUAL.PRG
     528                                                                                                     .\WPSRS\ANNUAL.PRG
     529        **************************************************************************                   .\WPSRS\ANNUAL.PRG
 -   530        * Update the BS_MONTH File                                                                   .\WPSRS\ANNUAL.PRG
     531        **************************************************************************                   .\WPSRS\ANNUAL.PRG
 *   532        SELECT BS_MONTH                                                                              .\WPSRS\ANNUAL.PRG
 *   533        SEEK cYYMM                                                                                   .\WPSRS\ANNUAL.PRG
 *   534        DO WHILE ( BS_MONTH->Rpt_Month == cYYMM )                                                    .\WPSRS\ANNUAL.PRG
 *   535           SELECT MONTHKEY                                                                           .\WPSRS\ANNUAL.PRG
 *   536           SEEK BS_MONTH->ID                                                                         .\WPSRS\ANNUAL.PRG
 *   537           SELECT MONTHLY                                                                            .\WPSRS\ANNUAL.PRG
 *   538           SEEK MONTHKEY->Prod_Code + MONTHKEY->Pt_Sp_Type + MONTHKEY->Padd_Code                     .\WPSRS\ANNUAL.PRG
     539           IF FOUND()                                                                                .\WPSRS\ANNUAL.PRG
 *   540              REPLACE BS_MONTH->Mth_Value WITH MONTHLY->Value                                        .\WPSRS\ANNUAL.PRG
     541              ++nBsRecs                                                                              .\WPSRS\ANNUAL.PRG
     542           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     543              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     544              * Record should have been found. display a warning message                             .\WPSRS\ANNUAL.PRG
     545              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     546              ++nMonWarn                                                                             .\WPSRS\ANNUAL.PRG
     547              IF ( nLineCount >= nPAGE_BREAK )                                                       .\WPSRS\ANNUAL.PRG
     548                 EJECT                                                                               .\WPSRS\ANNUAL.PRG
     549                 nLineCount := 0                                                                     .\WPSRS\ANNUAL.PRG
     550                 @ 2,1 SAY ""                                                                        .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 12                +
          +---------------------------------------------------------------------------------------------+

     551                 RptHeader( cHead, ++nPage )                                                         .\WPSRS\ANNUAL.PRG
     552                 @ PROW()+3,1 SAY cLine1                                                             .\WPSRS\ANNUAL.PRG
     553                 @ PROW()+2,1 SAY cLine2                                                             .\WPSRS\ANNUAL.PRG
     554                 @ PROW()+1,1 SAY cLine3                                                             .\WPSRS\ANNUAL.PRG
     555                 @ PROW()+1,1 SAY cLine4                                                             .\WPSRS\ANNUAL.PRG
     556                 nLineCount := nLineCount + 11                                                       .\WPSRS\ANNUAL.PRG
     557              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
 *   558              @ PROW()+1,01 SAY "BS_MONTH"                                                           .\WPSRS\ANNUAL.PRG
 *   559              @ PROW(),  13 SAY BS_MONTH->Rpt_Month                                                  .\WPSRS\ANNUAL.PRG
 *   560              @ PROW(),  22 SAY MONTHKEY->Prod_Code                                                  .\WPSRS\ANNUAL.PRG
 *   561              @ PROW(),  30 SAY MONTHKEY->Pt_Sp_Type                                                 .\WPSRS\ANNUAL.PRG
 *   562              @ PROW(),  38 SAY MONTHKEY->Padd_Code                                                  .\WPSRS\ANNUAL.PRG
 *   563              @ PROW(),  46 SAY "BS_MONTH->ID: " + BS_MONTH->ID                                      .\WPSRS\ANNUAL.PRG
     564              nLineCount := nLineCount + 1                                                           .\WPSRS\ANNUAL.PRG
     565           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
 *   566           SELECT BS_MONTH                                                                           .\WPSRS\ANNUAL.PRG
     567           SKIP                                                                                      .\WPSRS\ANNUAL.PRG
 *   568        ENDDO // End While cYYMM == BS_MONTH report month                                            .\WPSRS\ANNUAL.PRG
     569                                                                                                     .\WPSRS\ANNUAL.PRG
     570        // Array (aMonStatus) is built for the Annual Status Report                                  .\WPSRS\ANNUAL.PRG
 *   571        AADD( aMonStatus, { "MON"+cYYMM, nTotMonRecs, nMonWarn, nPubRecs, nBsRecs } )                .\WPSRS\ANNUAL.PRG
     572                                                                                                     .\WPSRS\ANNUAL.PRG
     573                                                                                                     .\WPSRS\ANNUAL.PRG
     574        **************************************************************************                   .\WPSRS\ANNUAL.PRG
 -   575        * Update the PUB_PSRS File                                                                   .\WPSRS\ANNUAL.PRG
     576        **************************************************************************                   .\WPSRS\ANNUAL.PRG
     577        SELECT PUB_PSRS                                                                              .\WPSRS\ANNUAL.PRG
 *   578        SEEK cYYMM                                                                                   .\WPSRS\ANNUAL.PRG
 *   579        DO WHILE ( PUB_PSRS->Rpt_Month == cYYMM )                                                    .\WPSRS\ANNUAL.PRG
     580           SELECT PSRSTEMP                                                                           .\WPSRS\ANNUAL.PRG
 *   581           SEEK PUB_PSRS->Rpt_Month + PUB_PSRS->Prod_Code + PUB_PSRS->Pt_Sp_Type + ;                 .\WPSRS\ANNUAL.PRG
     582                PUB_PSRS->Padd_Code + PUB_PSRS->Cum_Flag                                             .\WPSRS\ANNUAL.PRG
     583           IF FOUND()                                                                                .\WPSRS\ANNUAL.PRG
     584              REPLACE PUB_PSRS->Value WITH PSRSTEMP->Value                                           .\WPSRS\ANNUAL.PRG
     585              ++nPSRSRecs                                                                            .\WPSRS\ANNUAL.PRG
     586           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     587              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     588              * Record should have been found. display a warning message                             .\WPSRS\ANNUAL.PRG
     589              ********************************************************************                   .\WPSRS\ANNUAL.PRG
     590              ++nBSWarn                                                                              .\WPSRS\ANNUAL.PRG
     591              IF ( nLineCount >= nPAGE_BREAK )                                                       .\WPSRS\ANNUAL.PRG
     592                 EJECT                                                                               .\WPSRS\ANNUAL.PRG
     593                 nLineCount := 0                                                                     .\WPSRS\ANNUAL.PRG
     594                 @ 2,1 SAY ""                                                                        .\WPSRS\ANNUAL.PRG
     595                 RptHeader( cHead, ++nPage )                                                         .\WPSRS\ANNUAL.PRG
     596                 @ PROW()+3,1 SAY cLine1                                                             .\WPSRS\ANNUAL.PRG
     597                 @ PROW()+2,1 SAY cLine2                                                             .\WPSRS\ANNUAL.PRG
     598                 @ PROW()+1,1 SAY cLine3                                                             .\WPSRS\ANNUAL.PRG
     599                 @ PROW()+1,1 SAY cLine4                                                             .\WPSRS\ANNUAL.PRG
     600                 nLineCount := nLineCount + 11                                                       .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 13                +
          +---------------------------------------------------------------------------------------------+

     601              ENDIF                                                                                  .\WPSRS\ANNUAL.PRG
     602              @ PROW()+1,01 SAY "PUB_PSRS"                                                           .\WPSRS\ANNUAL.PRG
 *   603              @ PROW(),  13 SAY PUB_PSRS->Rpt_Month                                                  .\WPSRS\ANNUAL.PRG
     604              @ PROW(),  22 SAY PUB_PSRS->Prod_Code                                                  .\WPSRS\ANNUAL.PRG
     605              @ PROW(),  30 SAY PUB_PSRS->Pt_Sp_Type                                                 .\WPSRS\ANNUAL.PRG
     606              @ PROW(),  38 SAY PUB_PSRS->Padd_Code                                                  .\WPSRS\ANNUAL.PRG
     607              @ PROW(),  46 SAY "CUM FLAG: " + PUB_PSRS->Cum_Flag                                    .\WPSRS\ANNUAL.PRG
     608              nLineCount := nLineCount + 1                                                           .\WPSRS\ANNUAL.PRG
     609           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     610           SELECT PUB_PSRS                                                                           .\WPSRS\ANNUAL.PRG
     611           SKIP                                                                                      .\WPSRS\ANNUAL.PRG
 *   612        ENDDO // End While cYYMM == PUB_PSRS report month                                            .\WPSRS\ANNUAL.PRG
     613                                                                                                     .\WPSRS\ANNUAL.PRG
     614        // Array (aBSStatus) is built for the Annual Status Report                                   .\WPSRS\ANNUAL.PRG
 *   615        AADD( aBSStatus, { "BS"+cYYMM, nTotBSRecs, nBSWarn, nPSRSRecs } )                            .\WPSRS\ANNUAL.PRG
     616                                                                                                     .\WPSRS\ANNUAL.PRG
 *   617        ++nCnt    // read in the annual text file for the next month                                 .\WPSRS\ANNUAL.PRG
     618                                                                                                     .\WPSRS\ANNUAL.PRG
     619        lContinue := .NOT. EscAnnBack()   // Check to see if the user is aborting                    .\WPSRS\ANNUAL.PRG
     620                                                                                                     .\WPSRS\ANNUAL.PRG
     621     ENDDO       // end do while nCnt <= 12 .AND. lContinue                                          .\WPSRS\ANNUAL.PRG
     622                                                                                                     .\WPSRS\ANNUAL.PRG
     623     *************************************************************************                       .\WPSRS\ANNUAL.PRG
 -   624     * If no MON warnings, generate message: 'no errors in MONyymm' files                            .\WPSRS\ANNUAL.PRG
     625     *************************************************************************                       .\WPSRS\ANNUAL.PRG
     626     IF nMonWarn == 0                                                                                .\WPSRS\ANNUAL.PRG
 *   627        @ PROW()+1,01 SAY "*** NO ERRORS DETECTED WHILE PROCESSING THE MONyymm.DAT DATA FILES ***    .\WPSRS\ANNUAL.PRG
     628     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     629                                                                                                     .\WPSRS\ANNUAL.PRG
     630     *************************************************************************                       .\WPSRS\ANNUAL.PRG
 -   631     * If no BS warnings, generate message: 'no errors in BSyymm' files                              .\WPSRS\ANNUAL.PRG
     632     *************************************************************************                       .\WPSRS\ANNUAL.PRG
     633     IF nBSWarn == 0                                                                                 .\WPSRS\ANNUAL.PRG
 *   634        @ PROW()+1,01 SAY "*** NO ERRORS DETECTED WHILE PROCESSING THE BSyymm.DAT DATA FILES ***"    .\WPSRS\ANNUAL.PRG
     635     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     636                                                                                                     .\WPSRS\ANNUAL.PRG
     637                                                                                                     .\WPSRS\ANNUAL.PRG
     638     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
 -   639     * If the user has not aborted the annual update process,                                        .\WPSRS\ANNUAL.PRG
 -   640     * Update the BS_OOILS file with the new annual data.  Use "M34" in the                          .\WPSRS\ANNUAL.PRG
 -   641     * BS_MONTH file.                                                                                .\WPSRS\ANNUAL.PRG
     642     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
     643     IF lContinue    // lContinue will be false if the user aborts the process                       .\WPSRS\ANNUAL.PRG
     644       SELECT BS_OOILS                                                                               .\WPSRS\ANNUAL.PRG
 *   645       SEEK GetYY( -2, "YY" ) + "12"   // December of two years ago                                  .\WPSRS\ANNUAL.PRG
 *   646       nPrior := BS_OOILS->Eom_Stock   // EOM stocks for December of two years ago                   .\WPSRS\ANNUAL.PRG
     647       FOR nCnt := 1 TO 12             // 1 represents JAN, 2 represents FEB, etc..                  .\WPSRS\ANNUAL.PRG
 *   648          cMM := ALLTRIM( STR( nCnt ) )                                                              .\WPSRS\ANNUAL.PRG
 *   649          IF ( LEN( cMM ) == 1 )                                                                     .\WPSRS\ANNUAL.PRG
 *   650             cMM := "0" + cMM                                                                        .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 14                +
          +---------------------------------------------------------------------------------------------+

     651          ENDIF                                                                                      .\WPSRS\ANNUAL.PRG
 *   652          cYYMM := cOneYY + cMM            // i.e. "9302" for FEB 1993                               .\WPSRS\ANNUAL.PRG
 *   653          SELECT BS_MONTH                                                                            .\WPSRS\ANNUAL.PRG
 *   654          SEEK cYYMM + "M34"               // "M34" represents Other Oils                            .\WPSRS\ANNUAL.PRG
     655          SELECT BS_OOILS                                                                            .\WPSRS\ANNUAL.PRG
 *   656          SEEK cYYMM                                                                                 .\WPSRS\ANNUAL.PRG
 *   657          REPLACE BS_OOILS->Eom_Stock WITH BS_MONTH->Mth_Value                                       .\WPSRS\ANNUAL.PRG
     658          REPLACE BS_OOILS->Stk_Change WITH ;                                                        .\WPSRS\ANNUAL.PRG
 *   659               ( ( BS_OOILS->Eom_Stock - nPrior ) / DaysInMth( cMM, cOneYY ) )                       .\WPSRS\ANNUAL.PRG
     660          nPrior := BS_OOILS->Eom_Stock  // nPrior = Prior EOM Stocks                                .\WPSRS\ANNUAL.PRG
     661       NEXT                                                                                          .\WPSRS\ANNUAL.PRG
     662       SELECT BS_OOILS                                                                               .\WPSRS\ANNUAL.PRG
 *   663       SEEK GetYY( 0, "YY" ) + "01"    // January of the current year                                .\WPSRS\ANNUAL.PRG
     664       REPLACE BS_OOILS->Stk_Change WITH ;                                                           .\WPSRS\ANNUAL.PRG
 *   665               ( ( BS_OOILS->Eom_Stock - nPrior ) / DaysInMth( '01', GetYY(0,'YY') ) )               .\WPSRS\ANNUAL.PRG
     666     ENDIF  // End if lContinue                                                                      .\WPSRS\ANNUAL.PRG
     667                                                                                                     .\WPSRS\ANNUAL.PRG
     668     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
     669     * Close all of the Data Base Files                                                              .\WPSRS\ANNUAL.PRG
     670     ****************************************************************************                    .\WPSRS\ANNUAL.PRG
     671     AnnUpClose()                                                                                    .\WPSRS\ANNUAL.PRG
     672                                                                                                     .\WPSRS\ANNUAL.PRG
     673     *****************************************************************************                   .\WPSRS\ANNUAL.PRG
 -   674     * Include the Annual Procedures Summary into the report text file if the                        .\WPSRS\ANNUAL.PRG
     675     * user has not aborted the process                                                              .\WPSRS\ANNUAL.PRG
     676     *****************************************************************************                   .\WPSRS\ANNUAL.PRG
     677     IF lContinue     // lContinue will be false if the user aborted the process                     .\WPSRS\ANNUAL.PRG
     678        AnnStatusRep( aMonStatus, aBSStatus, ++nPage )                                               .\WPSRS\ANNUAL.PRG
     679     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     680                                                                                                     .\WPSRS\ANNUAL.PRG
     681     SET DEVICE TO SCREEN                                                                            .\WPSRS\ANNUAL.PRG
     682     SET PRINTER OFF                                                                                 .\WPSRS\ANNUAL.PRG
     683     SET PRINTER TO                                                                                  .\WPSRS\ANNUAL.PRG
     684     SET CONSOLE ON                                                                                  .\WPSRS\ANNUAL.PRG
     685                                                                                                     .\WPSRS\ANNUAL.PRG
     686     *****************************************************************************                   .\WPSRS\ANNUAL.PRG
     687     * Delete the original files from the temporary back up directory                                .\WPSRS\ANNUAL.PRG
     688     *****************************************************************************                   .\WPSRS\ANNUAL.PRG
     689     DelBkup( aBackFiles )                                                                           .\WPSRS\ANNUAL.PRG
     690                                                                                                     .\WPSRS\ANNUAL.PRG
     691     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     692                                                                                                     .\WPSRS\ANNUAL.PRG
     693  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     694                                                                                                     .\WPSRS\ANNUAL.PRG
     695  RETURN( lContinue )   // End function Ann_Pub_Bs()                                                 .\WPSRS\ANNUAL.PRG
     696                                                                                                     .\WPSRS\ANNUAL.PRG
     697                                                                                                     .\WPSRS\ANNUAL.PRG
     698  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     699  * Function:   ArcPubSpot                                                                           .\WPSRS\ANNUAL.PRG
 -   700  * Purpose:    To remove all weekly data from 2 years ago from the PUB_SPOT                         .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 15                +
          +---------------------------------------------------------------------------------------------+

     701  *             file.  The removed weekly data are then appended to                                  .\WPSRS\ANNUAL.PRG
     702  *             PUB_SPOT.DBF in the 'ARC' directory                                                  .\WPSRS\ANNUAL.PRG
     703  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     704  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     705  FUNCTION ArcPubSpot()                                                                              .\WPSRS\ANNUAL.PRG
     706  LOCAL cTempFile  := PREFIX('TEMP') + 'SPOTTEMP.DBF'                                                .\WPSRS\ANNUAL.PRG
 *   707  LOCAL c2YearsAgo := SUBSTR(GETWEEK(-104, "YYMMDD"),1,2) + '1231'                                   .\WPSRS\ANNUAL.PRG
     708  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
     709  LOCAL lContinue  := .F.                                                                            .\WPSRS\ANNUAL.PRG
     710                                                                                                     .\WPSRS\ANNUAL.PRG
     711  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     712     IF UseDbf('PUB', 'PUB_SPOT', 'PUB_SPOT', .T.)                                                   .\WPSRS\ANNUAL.PRG
     713        IF FILE(PREFIX('ARC') + 'PUB_SPOT.DBF')                                                      .\WPSRS\ANNUAL.PRG
     714           IF UseDbf('ARC', 'PUB_SPOT', 'ARC_SPOT', .T.)                                             .\WPSRS\ANNUAL.PRG
     715              lContinue := .T.                                                                       .\WPSRS\ANNUAL.PRG
     716           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     717              SysMsgTx( '269', 'Unable to open: ' + PREFIX('ARC') + 'PUB_SPOT.DBF' )                 .\WPSRS\ANNUAL.PRG
     718           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     719        ELSE                                                                                         .\WPSRS\ANNUAL.PRG
     720           SysMsgTx( '269', 'Unable to locate: ' + PREFIX('ARC') + 'PUB_SPOT.DBF' )                  .\WPSRS\ANNUAL.PRG
     721        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     722     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     723        SysMsgTx( '269', 'Unable to open: ' + PREFIX('PUB') + 'PUB_SPOT.DBF' )                       .\WPSRS\ANNUAL.PRG
     724     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     725  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     726                                                                                                     .\WPSRS\ANNUAL.PRG
     727  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     728                                                                                                     .\WPSRS\ANNUAL.PRG
     729     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     730     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
     731     Center(10, 'Archiving/Deleting the oldest records from PUB_SPOT.DBF')                           .\WPSRS\ANNUAL.PRG
     732     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
     733                                                                                                     .\WPSRS\ANNUAL.PRG
     734     SELECT PUB_SPOT                                                                                 .\WPSRS\ANNUAL.PRG
 *   735     COPY TO (cTempFile) FOR PUB_SPOT->Rpt_Period <= c2YearsAgo                                      .\WPSRS\ANNUAL.PRG
 *   736     DELETE ALL FOR PUB_SPOT->Rpt_Period <= c2YearsAgo                                               .\WPSRS\ANNUAL.PRG
     737     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     738     PUB_SPOT->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     739                                                                                                     .\WPSRS\ANNUAL.PRG
     740     SELECT ARC_SPOT                                                                                 .\WPSRS\ANNUAL.PRG
     741     APPEND FROM (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     742     ARC_SPOT->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     743     DELETE FILE (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     744                                                                                                     .\WPSRS\ANNUAL.PRG
     745     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     746                                                                                                     .\WPSRS\ANNUAL.PRG
     747  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     748                                                                                                     .\WPSRS\ANNUAL.PRG
     749  RETURN( lContinue )                                                                                .\WPSRS\ANNUAL.PRG
     750                                                                                                     .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 16                +
          +---------------------------------------------------------------------------------------------+

     751                                                                                                     .\WPSRS\ANNUAL.PRG
     752  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     753  * Function:   ArcPubCrud                                                                           .\WPSRS\ANNUAL.PRG
 -   754  * Purpose:    To remove all weekly data from 2 years ago except those                              .\WPSRS\ANNUAL.PRG
 -   755  *             whose reporting date is the first week of each year in the                           .\WPSRS\ANNUAL.PRG
     756  *             PUB_CRUD file                                                                        .\WPSRS\ANNUAL.PRG
     757  *             The removed weekly data are then appended to                                         .\WPSRS\ANNUAL.PRG
     758  *             PUB_CRUD.DBF in the 'ARC' directory                                                  .\WPSRS\ANNUAL.PRG
     759  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     760  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     761  FUNCTION ArcPubCrud()                                                                              .\WPSRS\ANNUAL.PRG
     762  LOCAL cTempFile  := PREFIX('TEMP') + 'CRUDTEMP.DBF'                                                .\WPSRS\ANNUAL.PRG
 *   763  LOCAL c2YearsAgo := MAKEDATE( SUBSTR(GETWEEK(-104, "YYMMDD"),1,2) + '1231' )                       .\WPSRS\ANNUAL.PRG
     764  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
     765  LOCAL lContinue  := .F.                                                                            .\WPSRS\ANNUAL.PRG
     766                                                                                                     .\WPSRS\ANNUAL.PRG
     767  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     768     IF UseDbf('PUB', 'PUB_CRUD', 'PUB_CRUD', .T.)                                                   .\WPSRS\ANNUAL.PRG
     769        IF FILE(PREFIX('ARC') + 'PUB_CRUD.DBF')                                                      .\WPSRS\ANNUAL.PRG
     770           IF UseDbf('ARC', 'PUB_CRUD', 'ARC_CRUD', .T.)                                             .\WPSRS\ANNUAL.PRG
     771              lContinue := .T.                                                                       .\WPSRS\ANNUAL.PRG
     772           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     773              SysMsgTx( '269', 'Unable to open: ' + PREFIX('ARC') + 'PUB_CRUD.DBF' )                 .\WPSRS\ANNUAL.PRG
     774           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     775        ELSE                                                                                         .\WPSRS\ANNUAL.PRG
     776           SysMsgTx( '269', 'Unable to locate: ' + PREFIX('ARC') + 'PUB_CRUD.DBF' )                  .\WPSRS\ANNUAL.PRG
     777        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     778     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     779        SysMsgTx( '269', 'Unable to open: ' + PREFIX('PUB') + 'PUB_CRUD.DBF' )                       .\WPSRS\ANNUAL.PRG
     780     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     781  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     782                                                                                                     .\WPSRS\ANNUAL.PRG
     783  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     784                                                                                                     .\WPSRS\ANNUAL.PRG
     785     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     786     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
     787     Center(10, 'Archiving/Deleting the oldest records from PUB_CRUD.DBF')                           .\WPSRS\ANNUAL.PRG
     788     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
     789                                                                                                     .\WPSRS\ANNUAL.PRG
     790     SELECT PUB_CRUD                                                                                 .\WPSRS\ANNUAL.PRG
 *   791     COPY TO (cTempFile) FOR PUB_CRUD->Rpt_Date <= c2YearsAgo .AND. ;                                .\WPSRS\ANNUAL.PRG
 *   792                             YEAR(PUB_CRUD->Rpt_Date - 7) = YEAR(PUB_CRUD->Rpt_Date)                 .\WPSRS\ANNUAL.PRG
 *   793     DELETE ALL FOR PUB_CRUD->Rpt_Date <= c2YearsAgo .AND. ;                                         .\WPSRS\ANNUAL.PRG
 *   794                    YEAR(PUB_CRUD->Rpt_Date - 7) = YEAR(PUB_CRUD->Rpt_Date)                          .\WPSRS\ANNUAL.PRG
     795     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     796     PUB_CRUD->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     797                                                                                                     .\WPSRS\ANNUAL.PRG
     798     SELECT ARC_CRUD                                                                                 .\WPSRS\ANNUAL.PRG
     799     APPEND FROM (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     800     ARC_CRUD->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 17                +
          +---------------------------------------------------------------------------------------------+

     801     DELETE FILE (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     802                                                                                                     .\WPSRS\ANNUAL.PRG
     803     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     804                                                                                                     .\WPSRS\ANNUAL.PRG
     805  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     806                                                                                                     .\WPSRS\ANNUAL.PRG
     807  RETURN( lContinue )                                                                                .\WPSRS\ANNUAL.PRG
     808                                                                                                     .\WPSRS\ANNUAL.PRG
     809                                                                                                     .\WPSRS\ANNUAL.PRG
     810  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     811  * Function:   ArcPubPrac                                                                           .\WPSRS\ANNUAL.PRG
 -   812  * Purpose:    To remove all weekly data from 4 years ago from the PUB_PRAC                         .\WPSRS\ANNUAL.PRG
     813  *             file.  The removed weekly data are then appended to                                  .\WPSRS\ANNUAL.PRG
     814  *             PUB_PRAC.DBF in the 'ARC' directory                                                  .\WPSRS\ANNUAL.PRG
     815  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     816  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     817  FUNCTION ArcPubPrac()                                                                              .\WPSRS\ANNUAL.PRG
     818  LOCAL cTempFile  := PREFIX('TEMP') + 'PRACTEMP.DBF'                                                .\WPSRS\ANNUAL.PRG
 *   819  LOCAL c4YearsAgo := SUBSTR(GETWEEK(-208, "YYMM"),1,2) + '12'                                       .\WPSRS\ANNUAL.PRG
     820  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
     821  LOCAL lContinue  := .F.                                                                            .\WPSRS\ANNUAL.PRG
     822                                                                                                     .\WPSRS\ANNUAL.PRG
     823  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     824     IF UseDbf('PUB', 'PUB_PRAC', 'PUB_PRAC', .T.)                                                   .\WPSRS\ANNUAL.PRG
     825        IF FILE(PREFIX('ARC') + 'PUB_PRAC.DBF')                                                      .\WPSRS\ANNUAL.PRG
     826           IF UseDbf('ARC', 'PUB_PRAC', 'ARC_PRAC', .T.)                                             .\WPSRS\ANNUAL.PRG
     827              lContinue := .T.                                                                       .\WPSRS\ANNUAL.PRG
     828           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     829              SysMsgTx( '269', 'Unable to open: ' + PREFIX('ARC') + 'PUB_PRAC.DBF' )                 .\WPSRS\ANNUAL.PRG
     830           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     831        ELSE                                                                                         .\WPSRS\ANNUAL.PRG
     832           SysMsgTx( '269', 'Unable to locate: ' + PREFIX('ARC') + 'PUB_PRAC.DBF' )                  .\WPSRS\ANNUAL.PRG
     833        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     834     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     835        SysMsgTx( '269', 'Unable to open: ' + PREFIX('PUB') + 'PUB_PRAC.DBF' )                       .\WPSRS\ANNUAL.PRG
     836     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     837  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     838                                                                                                     .\WPSRS\ANNUAL.PRG
     839  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     840                                                                                                     .\WPSRS\ANNUAL.PRG
     841     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     842     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
     843     Center(10, 'Archiving/Deleting the oldest records from PUB_PRAC.DBF')                           .\WPSRS\ANNUAL.PRG
     844     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
     845                                                                                                     .\WPSRS\ANNUAL.PRG
     846     SELECT PUB_PRAC                                                                                 .\WPSRS\ANNUAL.PRG
 *   847     COPY TO (cTempFile) FOR PUB_PRAC->Rpt_Month <= c4YearsAgo                                       .\WPSRS\ANNUAL.PRG
 *   848     DELETE ALL FOR PUB_PRAC->Rpt_Month <= c4YearsAgo                                                .\WPSRS\ANNUAL.PRG
     849     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     850     PUB_PRAC->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 18                +
          +---------------------------------------------------------------------------------------------+

     851                                                                                                     .\WPSRS\ANNUAL.PRG
     852     SELECT ARC_PRAC                                                                                 .\WPSRS\ANNUAL.PRG
     853     APPEND FROM (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     854     ARC_PRAC->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     855     DELETE FILE (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     856                                                                                                     .\WPSRS\ANNUAL.PRG
     857     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     858                                                                                                     .\WPSRS\ANNUAL.PRG
     859  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     860                                                                                                     .\WPSRS\ANNUAL.PRG
     861  RETURN( lContinue )                                                                                .\WPSRS\ANNUAL.PRG
     862                                                                                                     .\WPSRS\ANNUAL.PRG
     863                                                                                                     .\WPSRS\ANNUAL.PRG
     864  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     865  * Function:   ArcPubMnth                                                                           .\WPSRS\ANNUAL.PRG
 -   866  * Purpose:    To remove all weekly data from 2 years ago from the PUB_MNTH                         .\WPSRS\ANNUAL.PRG
     867  *             file.  The removed weekly data are then appended to                                  .\WPSRS\ANNUAL.PRG
     868  *             PUB_MNTH.DBF in the 'ARC' directory                                                  .\WPSRS\ANNUAL.PRG
     869  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     870  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     871  FUNCTION ArcPubMnth()                                                                              .\WPSRS\ANNUAL.PRG
     872  LOCAL cTempFile  := PREFIX('TEMP') + 'MNTHTEMP.DBF'                                                .\WPSRS\ANNUAL.PRG
 *   873  LOCAL c2YearsAgo := SUBSTR(GETWEEK(-104, "YYMM"),1,2) + '12'                                       .\WPSRS\ANNUAL.PRG
     874  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
     875  LOCAL lContinue  := .F.                                                                            .\WPSRS\ANNUAL.PRG
     876                                                                                                     .\WPSRS\ANNUAL.PRG
     877  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     878     IF UseDbf('PUB', 'PUB_MNTH', 'PUB_MNTH', .T.)                                                   .\WPSRS\ANNUAL.PRG
     879        IF FILE(PREFIX('ARC') + 'PUB_MNTH.DBF')                                                      .\WPSRS\ANNUAL.PRG
     880           IF UseDbf('ARC', 'PUB_MNTH', 'ARC_MNTH', .T.)                                             .\WPSRS\ANNUAL.PRG
     881              lContinue := .T.                                                                       .\WPSRS\ANNUAL.PRG
     882           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     883              SysMsgTx( '269', 'Unable to open: ' + PREFIX('ARC') + 'PUB_MNTH.DBF' )                 .\WPSRS\ANNUAL.PRG
     884           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     885        ELSE                                                                                         .\WPSRS\ANNUAL.PRG
     886           SysMsgTx( '269', 'Unable to locate: ' + PREFIX('ARC') + 'PUB_MNTH.DBF' )                  .\WPSRS\ANNUAL.PRG
     887        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     888     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     889        SysMsgTx( '269', 'Unable to open: ' + PREFIX('PUB') + 'PUB_MNTH.DBF' )                       .\WPSRS\ANNUAL.PRG
     890     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     891  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     892                                                                                                     .\WPSRS\ANNUAL.PRG
     893  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     894                                                                                                     .\WPSRS\ANNUAL.PRG
     895     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     896     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG
     897     Center(10, 'Archiving/Deleting the oldest records from PUB_MNTH.DBF')                           .\WPSRS\ANNUAL.PRG
     898     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
     899                                                                                                     .\WPSRS\ANNUAL.PRG
     900     SELECT PUB_MNTH                                                                                 .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 19                +
          +---------------------------------------------------------------------------------------------+

 *   901     COPY TO (cTempFile) FOR PUB_MNTH->Rpt_Month < c2YearsAgo                                        .\WPSRS\ANNUAL.PRG
 *   902     DELETE ALL FOR PUB_MNTH->Rpt_Month < c2YearsAgo                                                 .\WPSRS\ANNUAL.PRG
     903     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     904     PUB_MNTH->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     905                                                                                                     .\WPSRS\ANNUAL.PRG
     906     SELECT ARC_MNTH                                                                                 .\WPSRS\ANNUAL.PRG
     907     APPEND FROM (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     908     ARC_MNTH->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     909     DELETE FILE (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     910                                                                                                     .\WPSRS\ANNUAL.PRG
     911     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     912                                                                                                     .\WPSRS\ANNUAL.PRG
     913  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     914                                                                                                     .\WPSRS\ANNUAL.PRG
     915  RETURN( lContinue )                                                                                .\WPSRS\ANNUAL.PRG
     916                                                                                                     .\WPSRS\ANNUAL.PRG
     917                                                                                                     .\WPSRS\ANNUAL.PRG
     918  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     919  * Function:   ArcPubPsrs                                                                           .\WPSRS\ANNUAL.PRG
 -   920  * Purpose:    To remove all weekly data from 2 years ago from the PUB_PSRS                         .\WPSRS\ANNUAL.PRG
     921  *             file.  The removed weekly data are then appended to                                  .\WPSRS\ANNUAL.PRG
     922  *             PUB_PSRS.DBF in the 'ARC' directory                                                  .\WPSRS\ANNUAL.PRG
     923  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
     924  ****************************************************************************                       .\WPSRS\ANNUAL.PRG
     925  FUNCTION ArcPubPsrs()                                                                              .\WPSRS\ANNUAL.PRG
     926  LOCAL cTempFile  := PREFIX('TEMP') + 'PSRSTEMP.DBF'                                                .\WPSRS\ANNUAL.PRG
 *   927  LOCAL c2YearsAgo := SUBSTR(GETWEEK(-104, "YYMM"),1,2) + '12'                                       .\WPSRS\ANNUAL.PRG
     928  LOCAL cDispMsg   := ""                                                                             .\WPSRS\ANNUAL.PRG
     929  LOCAL lContinue  := .F.                                                                            .\WPSRS\ANNUAL.PRG
     930                                                                                                     .\WPSRS\ANNUAL.PRG
     931  IF ConfirmESC( .F. ) == .F.                                                                        .\WPSRS\ANNUAL.PRG
     932     IF UseDbf('PUB', 'PUB_PSRS', 'PUB_PSRS', .T.)                                                   .\WPSRS\ANNUAL.PRG
     933        IF FILE(PREFIX('ARC') + 'PUB_PSRS.DBF')                                                      .\WPSRS\ANNUAL.PRG
     934           IF UseDbf('ARC', 'PUB_PSRS', 'ARC_PSRS', .T.)                                             .\WPSRS\ANNUAL.PRG
     935              lContinue := .T.                                                                       .\WPSRS\ANNUAL.PRG
     936           ELSE                                                                                      .\WPSRS\ANNUAL.PRG
     937              SysMsgTx( '269', 'Unable to open: ' + PREFIX('ARC') + 'PUB_PSRS.DBF' )                 .\WPSRS\ANNUAL.PRG
     938           ENDIF                                                                                     .\WPSRS\ANNUAL.PRG
     939        ELSE                                                                                         .\WPSRS\ANNUAL.PRG
     940           SysMsgTx( '269', 'Unable to locate: ' + PREFIX('ARC') + 'PUB_PSRS.DBF' )                  .\WPSRS\ANNUAL.PRG
     941        ENDIF                                                                                        .\WPSRS\ANNUAL.PRG
     942     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
     943        SysMsgTx( '269', 'Unable to open: ' + PREFIX('PUB') + 'PUB_PSRS.DBF' )                       .\WPSRS\ANNUAL.PRG
     944     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
     945  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     946                                                                                                     .\WPSRS\ANNUAL.PRG
     947  IF lContinue                                                                                       .\WPSRS\ANNUAL.PRG
     948                                                                                                     .\WPSRS\ANNUAL.PRG
     949     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.T.)                                                  .\WPSRS\ANNUAL.PRG
     950     Center(08, ' Annual Procedures In Progress ' )                                                  .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 20                +
          +---------------------------------------------------------------------------------------------+

     951     Center(10, 'Archiving/Deleting the oldest records from PUB_PSRS.DBF')                           .\WPSRS\ANNUAL.PRG
     952     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
     953                                                                                                     .\WPSRS\ANNUAL.PRG
     954     SELECT PUB_PSRS                                                                                 .\WPSRS\ANNUAL.PRG
 *   955     COPY TO (cTempFile) FOR PUB_PSRS->Rpt_Month <= c2YearsAgo                                       .\WPSRS\ANNUAL.PRG
 *   956     DELETE ALL FOR PUB_PSRS->Rpt_Month <= c2YearsAgo                                                .\WPSRS\ANNUAL.PRG
     957     PACK                                                                                            .\WPSRS\ANNUAL.PRG
     958     PUB_PSRS->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     959                                                                                                     .\WPSRS\ANNUAL.PRG
     960     SELECT ARC_PSRS                                                                                 .\WPSRS\ANNUAL.PRG
     961     APPEND FROM (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     962     ARC_PSRS->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
     963     DELETE FILE (cTempFile)                                                                         .\WPSRS\ANNUAL.PRG
     964                                                                                                     .\WPSRS\ANNUAL.PRG
     965     RESTSCREEN(07,10,15,70,cDispMsg)                                                                .\WPSRS\ANNUAL.PRG
     966                                                                                                     .\WPSRS\ANNUAL.PRG
     967  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
     968                                                                                                     .\WPSRS\ANNUAL.PRG
     969  RETURN( lContinue )                                                                                .\WPSRS\ANNUAL.PRG
     970                                                                                                     .\WPSRS\ANNUAL.PRG
     971                                                                                                     .\WPSRS\ANNUAL.PRG
     972  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
     973  * Function:   AnnStatusRep()                                                                       .\WPSRS\ANNUAL.PRG
     974  * Purpose:    To produce a short report detailing the success of the annual                        .\WPSRS\ANNUAL.PRG
     975  *             procedures                                                                           .\WPSRS\ANNUAL.PRG
 -   976  * Parameters: aMonStatus == An array holding the status for each month processed                   .\WPSRS\ANNUAL.PRG
     977  *                           via the 'MON' module:                                                  .\WPSRS\ANNUAL.PRG
 -   978  *                        aMonStatus[nX,1] == Name of text file (MONyymm.DAT)                       .\WPSRS\ANNUAL.PRG
     979  *                        aMonStatus[nX,2] == Total records in the 'MON' text file                  .\WPSRS\ANNUAL.PRG
     980  *                        aMonStatus[nX,3] == Total number of warnings issued                       .\WPSRS\ANNUAL.PRG
     981  *                                            during processing of the text file                    .\WPSRS\ANNUAL.PRG
     982  *                        aMonStatus[nX,4] == Total records overwritten in                          .\WPSRS\ANNUAL.PRG
     983  *                                            the PUB_MNTH.DBF                                      .\WPSRS\ANNUAL.PRG
     984  *                        aMonStatus[nX,5] == Total records overwritten in                          .\WPSRS\ANNUAL.PRG
 -   985  *                                            the BS_MONTH.DBF.                                     .\WPSRS\ANNUAL.PRG
     986  *                                                                                                  .\WPSRS\ANNUAL.PRG
 -   987  *             aBSStatus == An array holding the status for each month processed                    .\WPSRS\ANNUAL.PRG
     988  *                          via the 'BS' module:                                                    .\WPSRS\ANNUAL.PRG
 -   989  *                        aBSStatus[nX,1] == Name of text file (BSyymm.DAT)                         .\WPSRS\ANNUAL.PRG
     990  *                        aBSStatus[nX,2] == Total records in the 'BS' text file                    .\WPSRS\ANNUAL.PRG
     991  *                        aBSStatus[nX,3] == Total number of warnings issued                        .\WPSRS\ANNUAL.PRG
     992  *                                            during processing of the text file                    .\WPSRS\ANNUAL.PRG
     993  *                        aBSStatus[nX,4] == Total records overwritten in                           .\WPSRS\ANNUAL.PRG
     994  *                                            the PUB_PSRS.DBF                                      .\WPSRS\ANNUAL.PRG
     995  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
     996  FUNCTION AnnStatusRep( aMonStatus, aBSStatus, nPage )                                              .\WPSRS\ANNUAL.PRG
     997  LOCAL nCnt            // Loop Counter: 1 for JAN, 2 for FEB, ..... 12 for DEC                      .\WPSRS\ANNUAL.PRG
     998  LOCAL cAnnHead := ""  // Header information displayed on each page of the report                   .\WPSRS\ANNUAL.PRG
     999                                                                                                     .\WPSRS\ANNUAL.PRG
 *  1000  cAnnHead :=  " ANNUAL STATUS REPORT FOR UPDATING " +GetYY(-1,"YYYY")+ " DATA "                     .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 21                +
          +---------------------------------------------------------------------------------------------+

    1001                                                                                                     .\WPSRS\ANNUAL.PRG
    1002  @ 0,1 SAY ""                                                                                       .\WPSRS\ANNUAL.PRG
    1003  RptHeader( cAnnHead, nPage  )                                                                      .\WPSRS\ANNUAL.PRG
    1004                                                                                                     .\WPSRS\ANNUAL.PRG
    1005  // Generating Status Report for the 'MON' text files                                               .\WPSRS\ANNUAL.PRG
    1006  @ PROW()+3,1  SAY ""                                                                               .\WPSRS\ANNUAL.PRG
 *  1007  @ PROW()+1,10 SAY " NAME OF         RECORDS IN         RECORDS UPDATED         RECORDS UPDATED     .\WPSRS\ANNUAL.PRG
    1008  @ PROW()+1,10 SAY "INPUT FILE       INPUT FILE         IN PUB_MNTH.DBF         IN BS_MONTH.DBF     .\WPSRS\ANNUAL.PRG
    1009  @ PROW()+1,10 SAY REPLICATE( "-", 122 )                                                            .\WPSRS\ANNUAL.PRG
    1010  FOR nCnt := 1 TO 12                                                                                .\WPSRS\ANNUAL.PRG
    1011     @ PROW()+1,1 SAY ""                                                                             .\WPSRS\ANNUAL.PRG
    1012     @ PROW(),11  SAY  ALLTRIM(aMonStatus[ nCnt, 1 ])                                                .\WPSRS\ANNUAL.PRG
    1013     @ PROW(),30  SAY  ALLTRIM(STR(aMonStatus[ nCnt, 2 ]))                                           .\WPSRS\ANNUAL.PRG
    1014     @ PROW(),52  SAY  ALLTRIM(STR(aMonStatus[ nCnt, 4 ]))                                           .\WPSRS\ANNUAL.PRG
    1015     @ PROW(),76  SAY  ALLTRIM(STR(aMonStatus[ nCnt, 5 ]))                                           .\WPSRS\ANNUAL.PRG
    1016     @ PROW(),98  SAY  ALLTRIM(STR(aMonStatus[ nCnt, 3 ]))                                           .\WPSRS\ANNUAL.PRG
    1017     **************************************************************************                      .\WPSRS\ANNUAL.PRG
 -  1018     * If the # of warnings for the current monthly file is 0, AND the number                        .\WPSRS\ANNUAL.PRG
 -  1019     * of records updated in the PUB file is equal to the number of records                          .\WPSRS\ANNUAL.PRG
 -  1020     * in the input monthly file, then the status for this input file is                             .\WPSRS\ANNUAL.PRG
    1021     * "SATISFACTORY". If not, then the status is "POSSIBLE PROBLEM"                                 .\WPSRS\ANNUAL.PRG
    1022     **************************************************************************                      .\WPSRS\ANNUAL.PRG
    1023     IF ( aMonStatus[nCnt,3] == 0 ) .AND. ( aMonStatus[nCnt,2] == aMonStatus[nCnt,4] )               .\WPSRS\ANNUAL.PRG
    1024        @ PROW(),111 SAY "SATISFACTORY"                                                              .\WPSRS\ANNUAL.PRG
    1025     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
    1026        @ PROW(),111 SAY "POSSIBLE PROBLEM"                                                          .\WPSRS\ANNUAL.PRG
    1027     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
    1028  NEXT nCnt                                                                                          .\WPSRS\ANNUAL.PRG
    1029                                                                                                     .\WPSRS\ANNUAL.PRG
    1030  // Generating Status Report for the 'BS' text files                                                .\WPSRS\ANNUAL.PRG
    1031  @ PROW()+3,1  SAY ""                                                                               .\WPSRS\ANNUAL.PRG
 *  1032  @ PROW()+1,10 SAY " NAME OF         RECORDS IN         RECORDS UPDATED         NUMBER OF           .\WPSRS\ANNUAL.PRG
    1033  @ PROW()+1,10 SAY "INPUT FILE       INPUT FILE         IN PUB_PSRS.DBF         WARNINGS            .\WPSRS\ANNUAL.PRG
    1034  @ PROW()+1,10 SAY REPLICATE( "-", 122 )                                                            .\WPSRS\ANNUAL.PRG
    1035  FOR nCnt := 1 TO 12                                                                                .\WPSRS\ANNUAL.PRG
    1036     @ PROW()+1,1 SAY ""                                                                             .\WPSRS\ANNUAL.PRG
    1037     @ PROW(),11  SAY  ALLTRIM(aBSStatus[ nCnt, 1 ])                                                 .\WPSRS\ANNUAL.PRG
    1038     @ PROW(),30  SAY  ALLTRIM(STR(aBSStatus[ nCnt, 2 ]))                                            .\WPSRS\ANNUAL.PRG
    1039     @ PROW(),52  SAY  ALLTRIM(STR(aBSStatus[ nCnt, 4 ]))                                            .\WPSRS\ANNUAL.PRG
    1040     @ PROW(),76  SAY  ALLTRIM(STR(aBSStatus[ nCnt, 3 ]))                                            .\WPSRS\ANNUAL.PRG
    1041     **************************************************************************                      .\WPSRS\ANNUAL.PRG
 -  1042     * If the # of warnings for the current monthly file is 0, AND the number                        .\WPSRS\ANNUAL.PRG
 -  1043     * of records updated in the PUB file is equal to the number of records                          .\WPSRS\ANNUAL.PRG
 -  1044     * in the input monthly file, then the status for this input file is                             .\WPSRS\ANNUAL.PRG
    1045     * "SATISFACTORY". If not, then the status is "POSSIBLE PROBLEM"                                 .\WPSRS\ANNUAL.PRG
    1046     **************************************************************************                      .\WPSRS\ANNUAL.PRG
    1047     IF ( aBSStatus[nCnt,3] == 0 ) .AND. ( aBSStatus[nCnt,2] == aBSStatus[nCnt,4] )                  .\WPSRS\ANNUAL.PRG
    1048        @ PROW(),91 SAY "SATISFACTORY"                                                               .\WPSRS\ANNUAL.PRG
    1049     ELSE                                                                                            .\WPSRS\ANNUAL.PRG
    1050        @ PROW(),91 SAY "POSSIBLE PROBLEM"                                                           .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 22                +
          +---------------------------------------------------------------------------------------------+

    1051     ENDIF                                                                                           .\WPSRS\ANNUAL.PRG
    1052  NEXT nCnt                                                                                          .\WPSRS\ANNUAL.PRG
    1053                                                                                                     .\WPSRS\ANNUAL.PRG
    1054  RETURN( NIL )                                                                                      .\WPSRS\ANNUAL.PRG
    1055                                                                                                     .\WPSRS\ANNUAL.PRG
    1056                                                                                                     .\WPSRS\ANNUAL.PRG
    1057  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
    1058  * Function:   AnnUpClose()                                                                         .\WPSRS\ANNUAL.PRG
    1059  * Purpose:    To close the files opened in function ann_pub_bs()                                   .\WPSRS\ANNUAL.PRG
    1060  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
    1061  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
    1062  FUNCTION AnnUpClose()                                                                              .\WPSRS\ANNUAL.PRG
    1063                                                                                                     .\WPSRS\ANNUAL.PRG
 *  1064  IF SELECT('BS_MONTH')  != 0;  BS_MONTH->(DBCLOSEAREA());  ENDIF                                    .\WPSRS\ANNUAL.PRG
    1065  IF SELECT('PUB_MNTH')  != 0;  PUB_MNTH->(DBCLOSEAREA());  ENDIF                                    .\WPSRS\ANNUAL.PRG
 *  1066  IF SELECT('MONTHKEY')  != 0;  MONTHKEY->(DBCLOSEAREA());  ENDIF                                    .\WPSRS\ANNUAL.PRG
    1067  IF SELECT('BS_OOILS')  != 0;  BS_OOILS->(DBCLOSEAREA());  ENDIF                                    .\WPSRS\ANNUAL.PRG
    1068  IF SELECT('PUB_PSRS')  != 0;  PUB_PSRS->(DBCLOSEAREA());  ENDIF                                    .\WPSRS\ANNUAL.PRG
 *  1069  IF SELECT('MONTHLY')   != 0                                                                        .\WPSRS\ANNUAL.PRG
 *  1070     SELECT MONTHLY                                                                                  .\WPSRS\ANNUAL.PRG
    1071     ZAP                                                                                             .\WPSRS\ANNUAL.PRG
 *  1072     MONTHLY->(DBCLOSEAREA())                                                                        .\WPSRS\ANNUAL.PRG
    1073  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
    1074  IF SELECT('PSRSTEMP')   != 0                                                                       .\WPSRS\ANNUAL.PRG
    1075     SELECT PSRSTEMP                                                                                 .\WPSRS\ANNUAL.PRG
    1076     ZAP                                                                                             .\WPSRS\ANNUAL.PRG
    1077     PSRSTEMP->(DBCLOSEAREA())                                                                       .\WPSRS\ANNUAL.PRG
    1078  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
    1079  RETURN( NIL )                                                                                      .\WPSRS\ANNUAL.PRG
    1080                                                                                                     .\WPSRS\ANNUAL.PRG
    1081                                                                                                     .\WPSRS\ANNUAL.PRG
    1082  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
    1083  * Function:   EscAnnBack()                                                                         .\WPSRS\ANNUAL.PRG
    1084  * Purpose:    To escape from the Annual program, restoring the necessary                           .\WPSRS\ANNUAL.PRG
    1085  * Parameters: None                                                                                 .\WPSRS\ANNUAL.PRG
    1086  *******************************************************************************                    .\WPSRS\ANNUAL.PRG
    1087  FUNCTION EscAnnBack()                                                                              .\WPSRS\ANNUAL.PRG
    1088  LOCAL lOut := .F.  // If False, then continue Processsing. If True, Stop.                          .\WPSRS\ANNUAL.PRG
    1089  LOCAL cDispMsg := ""                                                                               .\WPSRS\ANNUAL.PRG
    1090                                                                                                     .\WPSRS\ANNUAL.PRG
    1091  lOut := ConfirmESC( .T. )    // Query the user to see if they wish to abort                        .\WPSRS\ANNUAL.PRG
    1092  IF ( lOut )                                                                                        .\WPSRS\ANNUAL.PRG
    1093     SET DEVICE TO SCREEN                                                                            .\WPSRS\ANNUAL.PRG
    1094     cDispMsg  := DrawBox(07,10,15,70,,.T.,.F.,.F.)                                                  .\WPSRS\ANNUAL.PRG
    1095     Center(10,'ABORTING ANNUAL PROCEDURES AND RESTORING ORIGINAL FILES')                            .\WPSRS\ANNUAL.PRG
    1096     Center(12, 'Please Wait ...' )                                                                  .\WPSRS\ANNUAL.PRG
    1097     SET DEVICE TO PRINTER                                                                           .\WPSRS\ANNUAL.PRG
    1098     AnnUpClose()   // Close the open db files                                                       .\WPSRS\ANNUAL.PRG
    1099     ***********************************************************************                         .\WPSRS\ANNUAL.PRG
    1100     * Copy the original backup files back to the necessary directories                              .\WPSRS\ANNUAL.PRG

1         +---------------------------------------------------------------------------------------------+
          + FILE NAME:  .\WPSRS\ANNUAL.PRG                    199805151018      PAGE: 23                +
          +---------------------------------------------------------------------------------------------+

    1101     ***********************************************************************                         .\WPSRS\ANNUAL.PRG
    1102     BkupToLan( aBackFiles )                                                                         .\WPSRS\ANNUAL.PRG
    1103  ENDIF                                                                                              .\WPSRS\ANNUAL.PRG
    1104                                                                                                     .\WPSRS\ANNUAL.PRG
    1105  RETURN( lOut )                                                                                     .\WPSRS\ANNUAL.PRG
    1106                                                                                                     .\WPSRS\ANNUAL.PRG

1

    Y2K hits =                   129
    false positives =             59
    source code lines =         1202
