mise a jour du fichier produitp1 en batch

BoTTom |
      ***MISE A JOUR DU STOCK PRODUITP1********************
      ********************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. BCHCBL.
      ********************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-AS400.
       OBJECT-COMPUTER. IBM-AS400.
       SPECIAL-NAMES. CURRENCY SIGN IS "F" DECIMAL-POINT IS COMMA.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
      **********FICHIER INPUT/OUTPUT**********
           SELECT PROD1 ASSIGN TO DATABASE-PRODUITP1
           ORGANIZATION INDEXED RECORD KEY EXTERNALLY-DESCRIBED-KEY.
      **********FICHIERS INPUT****************
           SELECT MVTE ASSIGN TO DATABASE-ENTREEP1
           ORGANIZATION INDEXED RECORD KEY EXTERNALLY-DESCRIBED-KEY.
           SELECT MVTS ASSIGN TO DATABASE-SORTIEP1
           ORGANIZATION INDEXED RECORD KEY EXTERNALLY-DESCRIBED-KEY.
      **********FICHIERS OUTPUT****************
           SELECT ANOMVT ASSIGN TO DATABASE-ANOMVTP1
           ORGANIZATION INDEXED
           RECORD KEY EXTERNALLY-DESCRIBED-KEY.
      ************FICHIERS D'IMPRESSION****
           SELECT ETATANO ASSIGN TO FORMATFILE-ETATANO.
           SELECT ETATMAJ ASSIGN TO FORMATFILE-ETATMAJ.
      **********************************************
      **********************************************
       DATA DIVISION.
      *--------------
       FILE SECTION.
      *______________
       FD  PROD1 LABEL RECORD STANDARD.
       01  PROD.
       COPY DDS-PRODUITF1 OF PRODUITP1.
       FD  MVTE LABEL RECORD STANDARD.
       01  MVENTREE.
       COPY DDS-FORMATE OF ENTREEP1.
       FD  MVTS LABEL RECORD STANDARD.
       01  MVSORTIE.
       COPY DDS-FORMATS OF SORTIEP1.
       FD  ANOMVT LABEL RECORD STANDARD.
       01  ANOM.


|
       COPY DDS-FORMANO OF ANOMVTP1.
       FD  ETATANO LABEL RECORD STANDARD.
       01  LANO PIC X(132).
       FD  ETATMAJ LABEL RECORD STANDARD.
       01  LMAJ PIC X(132).
      *------------------------
       WORKING-STORAGE SECTION.
      *------------------------
       01  LTITRE.
       COPY DDS-TITRE-O OF ETATANO.
       01  LASTER.
       COPY DDS-ASTER-O OF ETATANO.
       01  LTCOLONNE.
       COPY DDS-TCOLONNE-O OF ETATANO.
       01  LPRODE.
       COPY DDS-PRODE-O OF ETATANO.
       01  LPRODS.
       COPY DDS-PRODS-O OF ETATANO.
       01  LPRODANO.
       COPY DDS-PRODANO-O OF ETATANO.
       01  LENREGANO.
       COPY DDS-ENREGANO-O OF ETATANO.
       01  LERROR.
       COPY DDS-ERROR-O OF ETATANO.
       01  LINTERA.
       COPY DDS-INTERA-O OF ETATANO.
       01  LTITREMAJ.
       COPY DDS-TITREMAJ-O OF ETATMAJ.
       01  LASTERMAJ.
       COPY DDS-ASTERMAJ-O OF ETATMAJ.
       01  LTCOLMAJ.
       COPY DDS-TCOLMAJ-O OF ETATMAJ.
       01  LPRODMAJE.
       COPY DDS-PRODMAJE-O OF ETATMAJ.
       01  LPRODMAJS.
       COPY DDS-PRODMAJS-O OF ETATMAJ.
       01  LINTERTOT.
       COPY DDS-INTERTOT-O OF ETATMAJ.
       01  LNS.
       COPY DDS-LIGNENS-O OF ETATMAJ.
       01  LINTERM.
       COPY DDS-INTERM-O OF ETATMAJ.
       01  LTOTMAJ.
       COPY DDS-TOTMAJ-O OF ETATMAJ.


|
       77  REF PIC X(6).
       77  IND PIC 9 COMP-3 VALUE ZERO.
      ***********************************************
       PROCEDURE DIVISION.
      ***********************************************
       10-DEB-UT.
           OPEN I-O PROD1
                INPUT MVTE MVTS
                OUTPUT ANOMVT ETATANO ETATMAJ.
           MOVE ZERO TO NSTOCK TOTPRODANO TOTENRANO
           TOTPRODMAJ ENTREE SORTIE TOTENTREE TOTSORTIE.
           PERFORM 320-DPANO.
           PERFORM 310-DPMAJ.
           READ PROD1.
           READ MVTE AT END MOVE HIGH-VALUE TO CODPROD OF MVENTREE.
           READ MVTS AT END MOVE HIGH-VALUE TO CODPROD OF MVSORTIE.
      ***APPAREILLAGE DE FICHIER*********************
       20-REF1.
           IF CODPROD OF PROD < CODPROD OF MVENTREE MOVE CODPROD OF
           PROD TO REF ELSE MOVE CODPROD OF MVENTREE TO REF.
       30-REF2.
           IF CODPROD OF MVSORTIE < REF MOVE CODPROD OF MVSORTIE TO REF.
      ****FIN D'APPAREILLAGE*********************
       40-INTERP1.
           MOVE CORR PRODUITF1 TO PRODMAJE-O.
           MOVE CORR PRODUITF1 TO PRODMAJS-O.
           MOVE CODPROD OF MVENTREE TO CODPROD OF LPRODE.
           MOVE CODPROD OF MVSORTIE TO CODPROD OF LPRODS.
           IF CODPROD OF MVENTREE NOT = REF GO 110-NMVTE.
      ***MOUVEMENT D'ENTREE***********************
       50-DMVTE.
       60-D1MVTE.
           IF CODPROD OF PROD NOT = REF GO 80-ANOE.
      ***MISE A JOUR D'ENTREE**********************
       70-MVTE.
           MOVE QTEMVT OF MVENTREE TO ENTREE.
           MOVE 1 TO IND.
           ADD ENTREE TO TOTENTREE.
           ADD QTEMVT OF MVENTREE TO QTESTOCK OF PROD.
           WRITE LMAJ FROM LPRODMAJE FORMAT "PRODMAJE" AT EOP PERFORM
           310-DPMAJ.
           WRITE LMAJ FROM LINTERM FORMAT "INTERM".
           MOVE SPACES TO CODPROD OF LPRODMAJE DESIPROD OF LPRODMAJE
           CODPROD OF LPRODMAJS DESIPROD OF LPRODMAJS.


|
           MOVE ZERO TO QTESTOCK OF LPRODMAJE QTESTOCK OF LPRODMAJS.
           GO 90-F1MVTE.
      ***ANOMALIE D'ENTREE******************
       80-ANOE.
           MOVE QTEMVT OF MVENTREE TO QTEMVT OF LPRODE.
           MOVE CORR FORMATE TO FORMANO.
           MOVE "E" TO TYPEMVT.
           MOVE 2 TO IND.
           ADD 1 TO TOTENRANO.
           WRITE LANO FROM LPRODE FORMAT "PRODE" AT EOP PERFORM
           320-DPANO.
           WRITE LANO FROM LINTERA FORMAT "INTERA".
           MOVE SPACES TO CODPROD OF LPRODE CODPROD OF LPRODS.
           WRITE ANOM FORMAT "FORMANO".
       90-F1MVTE.
           READ MVTE AT END MOVE HIGH-VALUE TO CODPROD OF MVENTREE.
           IF CODPROD OF MVENTREE = REF GO 60-D1MVTE.
       100-FMVTE.
           GO 120-INTERP2.
      ***PAS DE MOUVEMENT D'ENTREE*****************
       110-NMVTE.
       120-INTERP2.
           IF CODPROD OF MVSORTIE NOT = REF GO 190-NMVTS.
      ***MOUVEMENT DE SORTIE**********************
       130-DMVTS.
       140-D1MVTS.
           IF CODPROD OF PROD NOT = REF GO 160-ANOS.
      *** MISE A JOUR DE SORTIE********************
       150-MVTS.
           MOVE QTEMVT OF MVSORTIE TO SORTIE.
           MOVE 1 TO IND.
           ADD SORTIE TO TOTSORTIE.
           SUBTRACT QTEMVT OF MVSORTIE FROM QTESTOCK OF PROD.
           WRITE LMAJ FROM LPRODMAJS FORMAT "PRODMAJS" AT EOP PERFORM
           310-DPMAJ.
           WRITE LMAJ FROM LINTERM FORMAT "INTERM".
           MOVE SPACES TO CODPROD OF LPRODMAJS DESIPROD OF LPRODMAJS.
           MOVE ZERO TO QTESTOCK OF LPRODMAJS.
           GO 170-F1MVTS.
       160-ANOS.
           MOVE QTEMVT OF MVSORTIE TO QTEMVT OF LPRODS.
           MOVE CORR FORMATS TO FORMANO.
           MOVE "S" TO TYPEMVT.
           MOVE 2 TO IND.


|
           ADD 1 TO TOTENRANO.
           WRITE LANO FROM LPRODS FORMAT "PRODS" AT EOP PERFORM
           320-DPANO.
           WRITE LANO FROM LINTERA FORMAT "INTERA".
           MOVE SPACES TO CODPROD OF LPRODS.
           WRITE ANOM FORMAT "FORMANO".
       170-F1MVTS.
           READ MVTS AT END MOVE HIGH-VALUE TO CODPROD OF MVSORTIE.
           IF CODPROD OF MVSORTIE = REF GO 140-D1MVTS.
       180-FMVTS.
           GO 200-INTERP3.
      ***PAS DE MOUVEMENT DE SORTIE*******************
       190-NMVTS.
      *** MISE A JOUR ??******************************
       200-INTERP3.
           IF IND NOT = 1 GO 220-DNMAJ.
      ***ECRITURE M.A.J*******************************
       210-MAJ.
           ADD 1 TO TOTPRODMAJ.
           MOVE QTESTOCK OF PROD TO NSTOCK.
           WRITE LMAJ FROM LINTERTOT FORMAT "INTERTOT".
           WRITE LMAJ FROM LNS FORMAT "LIGNENS" AT EOP PERFORM
           310-DPMAJ.
           WRITE LMAJ FROM LINTERM FORMAT "INTERM".
           REWRITE PROD FORMAT "PRODUITF1" INVALID KEY MOVE CODPROD OF
           PROD TO CODPROD OF LERROR WRITE LANO FROM LERROR FORMAT
           "ERROR".
           GO 260-INTERP4.
      ***ANOMALIE ??****************************
       220-DNMAJ.
           IF IND = 2 GO 240-ANO.
      ***PAS DE MODIFICATION********************
       230-NANO.
           GO 250-FNMAJ.
      ***CUMUL PRODUITS EN ANOMALIE**************
       240-ANO.
           ADD 1 TO TOTPRODANO.
       250-FNMAJ.
      ***MODULE DE LECTURE***********************
       260-INTERP4.
           MOVE ZERO TO IND.
           IF CODPROD OF PROD NOT = REF GO 280-NOLEC.
      ***LECTURE FICHIER PRODUIT*****************
       270-LEC.


|
           READ PROD1 AT END MOVE HIGH-VALUE TO CODPROD OF PROD.
           GO 290-FPROD.
      ***PAS DE LECTURE**************************
       280-NOLEC.
      ***FIN DE TRAITEMENT ??********************
       290-FPROD.
           IF CODPROD OF PROD NOT = HIGH-VALUE OR CODPROD OF MVENTREE
           NOT = HIGH-VALUE OR CODPROD OF MVSORTIE NOT = HIGH-VALUE THEN
           GO 20-REF1.
       300-FIN-UT.
           WRITE LMAJ FROM LASTERMAJ FORMAT "ASTERMAJ".
           WRITE LMAJ FROM LTOTMAJ FORMAT "TOTMAJ".
           WRITE LANO FROM LASTER FORMAT "ASTER".
           WRITE LANO FROM LPRODANO FORMAT "PRODANO".
           WRITE LANO FROM LENREGANO FORMAT "ENREGANO".
           CLOSE PROD1 MVTE MVTS ANOMVT ETATANO ETATMAJ.
           STOP RUN.
      ***************************************
      ***DEBUT PAGE M.A.J *******************
       310-DPMAJ.
           WRITE LMAJ FROM LTITREMAJ FORMAT "TITREMAJ".
           WRITE LMAJ FROM LASTERMAJ FORMAT "ASTERMAJ".
           WRITE LMAJ FROM LTCOLMAJ FORMAT "TCOLMAJ".
           WRITE LMAJ FROM LASTERMAJ FORMAT "ASTERMAJ".
           WRITE LMAJ FROM LINTERM FORMAT "INTERM".
      ***DEBUT PAGE ANOMALIE******************
       320-DPANO.
           WRITE LANO FROM LTITRE FORMAT "TITRE".
           WRITE LANO FROM LASTER FORMAT "ASTER".
           WRITE LANO FROM LTCOLONNE FORMAT "TCOLONNE".
           WRITE LANO FROM LASTER FORMAT "ASTER".
           WRITE LANO FROM LINTERA FORMAT "INTERA".




©AF400