IDENTIFICATION DIVISION.
PROGRAM-ID. PRTAQ051.
*--------------------------------------------------------------*
*               PROGETTO RETTIFICHE                            *
*               -------------------                            *
* AUTORE       : FRANCO D'AMICO  C.O.DI MARSALA                *
*                                                              *
* FUNZIONE     :  SCELTA PARAMETRI PER VARIAZ.DOCUMENTI DIVERSI*
* PGM CHIAMANTI : PRTMN01                                      *
* PGM CHIAMATI  : PRTAQ06-PRTUT02-PRTAQ08                      *
* MAPPE         : MRTAQ051                                     *
* AREA DI INPUT : CRTMN01 -                                    *
*                                                              *
*--------------------------------------------------------------*

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. AS400.
OBJECT-COMPUTER. AS400.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VIDEO ASSIGN  TO WORKSTATION-MRTAQ05
ORGANIZATION     IS TRANSACTION
ACCESS           IS SEQUENTIAL
FILE STATUS      IS F-STATUS.


DATA DIVISION.

FILE SECTION.
FD   VIDEO
LABEL RECORD IS OMITTED.
01   REC-VIDEO.
COPY DDS-ALL-FORMAT OF MRTAQ05.

*****************************************************************
WORKING-STORAGE SECTION.
77 F-STATUS       PIC XX.
01  IND-ON          PIC 1 VALUE B"1".
01  IND-OFF         PIC 1 VALUE B"0".
01 AREA-INDIC.
COPY DDS-ALL-FORMATS-INDIC OF MRTAQ05.
01 WDATA.
03 WANNO      PIC 9(4).
03 WMESE      PIC 99.
03 WGIORNO    PIC 99.
01  WMPERI.
03 WMANNO  PIC 9(4).
03 WMMESE  PIC 99.
01  W-STRINGA       PIC X(76).
01  TESTO REDEFINES W-STRINGA.
02 MIASTRINGA  OCCURS 76 TIMES
INDEXED BY INDEX1.
03 ALFA    PIC X.
01 CONT          PIC 99 VALUE 0.
01 CONT2         PIC 99 VALUE 0.
LINKAGE SECTION.
BPINFO* CVR2019 Found explicit reference to library or file DCBCPY;
BPINFO*         manual handling may be required
BPCHCK  COPY CRTMN01 OF DCBCPY.
*****************************************************************
BPEURO PROCEDURE DIVISION USING AREA-MN01.
BPINFO* CVG1011 In field AREA-MN01 found the following classes:
BPINFO* CVG1010 Field CM1-IMPDA contains class AMOUNT.
BPINFO* CVG1010 Field CM1-IMPA contains class AMOUNT.
MAIN.
MOVE 0 TO   CM1-MATRICOLA CM1-D10PER CM1-PROPER WMPERI
BPEURO           CM1-IMPDA CM1-IMPA CM1-EMIDA.
BPINFO* CVG1110 Field CM1-IMPDA contains class AMOUNT.
BPINFO* CVG1110 Field CM1-IMPA contains class AMOUNT.
MOVE SPACES TO CM1-COD-FISC.
OPEN I-O VIDEO.
IF F-STATUS NOT EQUAL "00"
MOVE F-STATUS TO CM1-FSTATUS
MOVE "MRTAQ05" TO CM1-ERRFILE
MOVE "PRTAQ05" TO CM1-ERRPGM
MOVE 1         TO CM1-RETCOD
BPEURO        CALL "PRTUT02" USING AREA-MN01
BPINFO* CVG1011 In field AREA-MN01 found the following classes:
BPINFO* CVG1010 Field CM1-IMPDA contains class AMOUNT.
BPINFO* CVG1010 Field CM1-IMPA contains class AMOUNT.
END-IF.
MOVE IND-OFF TO IN12 OF MQ05-I-INDIC.
MOVE SPACES TO CM1-MSG.
PERFORM SEQUENZA THRU EX-SEQUENZA
UNTIL IN12 OF MQ05-I-INDIC = IND-ON.
FINE.
CLOSE VIDEO.
GOBACK.

SEQUENZA.
MOVE CM1-DATACHIARO TO MQ5OGGI OF MQ05-O.
MOVE SPACES TO MQ5CODFISC OF MQ05-I.
MOVE IND-OFF TO IN12 OF MQ05-I-INDIC.
BPDSPF       WRITE REC-VIDEO FORMAT "MQ05".
BPINFO* CVG1011 In field REC-VIDEO found the following classes:
BPINFO* CVG1010 Field MQ5IMPDA contains class AMOUNT.
BPINFO* CVG1010 Field MQ5IMPA contains class AMOUNT.
BPDSPF       READ VIDEO FORMAT "MQ05"
INDICATORS ARE AREA-INDIC.
BPINFO* CVG1011 In field VIDEO found the following classes:
BPINFO* CVG1010 Field MQ5IMPDA contains class AMOUNT.
BPINFO* CVG1010 Field MQ5IMPA contains class AMOUNT.
IF IN12  OF MQ05-I-INDIC = IND-ON
MOVE SPACES TO CM1-MSG
GO TO EX-SEQUENZA
END-IF.
IF MQ5SC7 OF MQ05-I IS NUMERIC
IF MQ5SC7 OF MQ05-I IS > 0
MOVE MQ5SC7 OF MQ05-I TO CM1-SC7
ELSE
MOVE 0 TO CM1-SC7
END-IF
ELSE
MOVE 0 TO CM1-SC7
END-IF.
IF MQ5PROG OF MQ05-I IS NUMERIC
IF MQ5PROG OF MQ05-I IS > 0
MOVE MQ5PROG OF MQ05-I TO CM1-PROG
ELSE
MOVE 0 TO CM1-PROG
END-IF
ELSE
MOVE 0 TO CM1-PROG
END-IF.
MOVE SPACES TO MQ5MSG OF MQ05-O.
IF MQ5MATR OF MQ05-I IS NUMERIC
IF MQ5MATR OF MQ05-I IS > 0
MOVE MQ5MATR OF MQ05-I TO CM1-MATRICOLA
ELSE
MOVE 0 TO CM1-MATRICOLA
END-IF
ELSE
MOVE 0 TO CM1-MATRICOLA
END-IF.
IF MQ5ANNO OF MQ05-I IS NUMERIC AND MQ5ANNO OF MQ05-I
IS > 0
AND (MQ5MESE OF MQ05-I IS NOT NUMERIC OR MQ5MESE
OF MQ05-I IS < 1 OR MQ5MESE OF MQ05-I IS > 12)
MOVE "MESE DEL PERIODO NON VALIDO!" TO W-STRINGA
MOVE 0 TO CONT
PERFORM RICERCA THRU EX-RICERCA
VARYING INDEX1 FROM 76 BY -1
UNTIL INDEX1 < 1 OR ALFA(INDEX1) NOT EQUAL TO SPACE
PERFORM SCRIVI THRU EX-SCRIVI
GO TO EX-SEQUENZA
END-IF.
IF MQ5MESE OF MQ05-I IS NUMERIC
AND MQ5ANNO OF MQ05-I IS NUMERIC
IF MQ5MESE OF MQ05-I IS > 0
AND MQ5ANNO OF MQ05-I IS > 0
MOVE MQ5MESE OF MQ05-I TO WMMESE
MOVE MQ5ANNO OF MQ05-I TO WMANNO
ELSE
MOVE 0 TO WMMESE WMANNO
END-IF
ELSE
MOVE 0 TO WMMESE WMANNO
END-IF.
MOVE WMPERI TO CM1-D10PER.
MOVE MQ5CODFISC OF MQ05-I TO CM1-COD-FISC.
BPDSPF       IF MQ5IMPDA OF MQ05-I IS NOT NUMERIC
BPINFO* CVG1110 Field MQ5IMPDA contains class AMOUNT.
BPDSPF          MOVE 0 TO MQ5IMPDA  OF MQ05-I
BPINFO* CVG1110 Field MQ5IMPDA contains class AMOUNT.
END-IF.
BPDSPF       IF MQ5IMPA OF MQ05-I IS NOT NUMERIC
BPINFO* CVG1110 Field MQ5IMPA contains class AMOUNT.
BPDSPF          MOVE 0 TO MQ5IMPA  OF MQ05-I
BPINFO* CVG1110 Field MQ5IMPA contains class AMOUNT.
END-IF.
BPDSPF       IF MQ5IMPA OF MQ05-I < MQ5IMPDA OF MQ05-I
AND MQ5IMPA OF MQ05-I IS > 0
BPINFO* CVG1110 Field MQ5IMPA contains class AMOUNT.
BPINFO* CVG1110 Field MQ5IMPDA contains class AMOUNT.
MOVE "RANGE IMPORTO NON VALIDO!" TO W-STRINGA
MOVE 0 TO CONT
PERFORM RICERCA THRU EX-RICERCA
VARYING INDEX1 FROM 76 BY -1
UNTIL INDEX1 < 1 OR ALFA(INDEX1) NOT EQUAL TO SPACE
PERFORM SCRIVI THRU EX-SCRIVI
GO TO EX-SEQUENZA
END-IF.
BPDSPF       MOVE MQ5IMPDA OF MQ05-I TO CM1-IMPDA.
BPINFO* CVG1118 Fields MQ5IMPDA and CM1-IMPDA contain the following
BPINFO*         class AMOUNT
BPDSPF       MOVE MQ5IMPA OF MQ05-I TO CM1-IMPA.
BPINFO* CVG1118 Fields MQ5IMPA and CM1-IMPA contain the following
BPINFO*         class AMOUNT
IF MQ5AAAA OF MQ05-I IS NUMERIC AND MQ5AAAA OF MQ05-I
IS > 0
AND (MQ5MM OF MQ05-I IS NOT NUMERIC OR MQ5MM
OF MQ05-I IS < 1 OR MQ5MM OF MQ05-I IS > 12
OR MQ5GG OF MQ05-I > 31)
MOVE "DATA FORMALMENTE ERRATA!" TO W-STRINGA
MOVE 0 TO CONT
PERFORM RICERCA THRU EX-RICERCA
VARYING INDEX1 FROM 76 BY -1
UNTIL INDEX1 < 1 OR ALFA(INDEX1) NOT EQUAL TO SPACE
PERFORM SCRIVI THRU EX-SCRIVI
GO TO EX-SEQUENZA
END-IF.
IF MQ5GG OF MQ05-I IS NUMERIC AND
MQ5MM OF MQ05-I IS NUMERIC AND
MQ5AAAA OF MQ05-I IS NUMERIC
MOVE MQ5GG OF MQ05-I TO WGIORNO
MOVE MQ5MM OF MQ05-I TO WMESE
MOVE MQ5AAAA OF MQ05-I TO WANNO
MOVE WDATA TO CM1-EMIDA
END-IF.
MOVE SPACES TO W-STRINGA CM1-MSG MQ5MSG.
BPEURO       CALL CM1-CHIAMANTE USING AREA-MN01.
BPINFO* CVG1011 In field AREA-MN01 found the following classes:
BPINFO* CVG1010 Field CM1-IMPDA contains class AMOUNT.
BPINFO* CVG1010 Field CM1-IMPA contains class AMOUNT.
MOVE CM1-MSG  TO W-STRINGA.
MOVE 0 TO CONT.
PERFORM RICERCA THRU EX-RICERCA
VARYING INDEX1 FROM 76 BY -1
UNTIL INDEX1 < 1 OR ALFA(INDEX1) NOT EQUAL TO SPACE.
PERFORM SCRIVI THRU EX-SCRIVI.
EX-SEQUENZA.
EXIT.

RICERCA.
SEARCH MIASTRINGA
AT END
GO TO EX-RICERCA
WHEN ALFA(INDEX1) IS EQUAL TO SPACE
ADD 1 TO CONT.
EX-RICERCA.
EXIT.

SCRIVI.
COMPUTE CONT2 = CONT / 2.
IF CONT2 = 0
MOVE 1 TO CONT2
END-IF.
STRING  W-STRINGA
DELIMITED BY SIZE INTO MQ5MSG
WITH POINTER CONT2.
EX-SCRIVI.
EXIT.