MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Append variable number of lines to the correct previous one
Goto page Previous  1, 2, 3
 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
Fab
Beginner


Joined: 15 Nov 2016
Posts: 46
Topics: 5

PostPosted: Tue May 16, 2017 1:36 am    Post subject: Reply with quote

It worked a treat Kolusu, as usual. Thanks much. Today I will test it on another input (adjusting what it need to be adjusted of course). Thanks again.
Back to top
View user's profile Send private message
Fab
Beginner


Joined: 15 Nov 2016
Posts: 46
Topics: 5

PostPosted: Wed May 17, 2017 8:58 am    Post subject: Reply with quote

Hello,
I tried today a different input, with 3 blocks (each line will be 131x3), it works perfect except for the 1st block.

my input now begins like this
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----
              +--------------------------------------------------------------------------------------------------------------         
              ! DATA_ESTRAZIONE !       CD_FNZ       !        PR_FNZ         ! CD_PRD_FNZ !       CD_CVZ       ! CD_FNZ_DEZ !         
              +--------------------------------------------------------------------------------------------------------------         
            1_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !         
            2_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !         
            3_! 16.05.2017      ! CF                 !             1223528   ! A1A5       ! 3777-01            ! 23         !         
              +--------------------------------------------------------------------------------------------------------------         
1PAGE    2                                                                                                                           
            -------------------------------------------------------------------------------------------------------------------       
            !          DESTINAZIONE           ! CD_FNZ_OPE !       OPERAZIONE        !    MODALITA_EROG     ! CD_ABI ! CD_CAB !       
            -------------------------------------------------------------------------------------------------------------------       
          1_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. C/C   ! 01005  ! 39530  !       
          2_! COMPRAVENDITA 1. CASA           ! ESTSVA     ! AUTORIZZAZIONE SVINCOLO ! MODALITA EROG. C/C   ! 01005  ! 39530  !       
          3_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. CASSA !        !        !       
            -------------------------------------------------------------------------------------------------------------------       
1PAGE    3                                                                                                                           
                                          ------------------------------------------------------+                                     
                                          !    NM_RAP    ! DT_LOG_OPE !   CD_USR   ! CD_INS_UOG !                                     
                                          ------------------------------------------------------+                                     
                                        1_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                     
                                        2_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                     
                                        3_!              ! 09.03.2017 ! OI48698    ! 8505       !                                     
                                          ------------------------------------------------------+                                     


First extracted column is different now (DATA_ESTRAZIONE), so in Step0100 I changed these lines
Code:

  INCLUDE COND=(001,005,CH,EQ,C'1PAGE',OR,       
                001,133,SS,EQ,C'_!',OR,         
*               001,133,SS,EQ,C'CD_FNZ')         
                001,133,SS,EQ,C'DATA_ESTRAZIONE')

  INREC IFOUTLEN=142,                                           
        IFTHEN=(WHEN=GROUP,BEGIN=(001,5,CH,EQ,C'1PAGE'),         
          PUSH=(134:ID=8)),                                     
*       IFTHEN=(WHEN=GROUP,BEGIN=(001,133,SS,EQ,C'CD_FNZ',AND,   
  IFTHEN=(WHEN=GROUP,BEGIN=(001,133,SS,EQ,C'DATA_ESTRAZIONE',AND,
                                  134,008,ZD,GT,1),             

  OUTREC IFTHEN=(WHEN=(001,005,CH,EQ,C'1PAGE',OR,       
*                      001,133,SS,EQ,C'CD_FNZ'),         
                       001,133,SS,EQ,C'DATA_ESTRAZIONE'),


At the end of Step0100, for the 1st block I have this
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----
            1_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !                001
            2_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !                002
            3_! 16.05.2017      ! CF                 !             1223528   ! A1A5       ! 3777-01            ! 23         !                003
          1_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. C/C   ! 01005  ! 39530  !              001
          2_! COMPRAVENDITA 1. CASA           ! ESTSVA     ! AUTORIZZAZIONE SVINCOLO ! MODALITA EROG. C/C   ! 01005  ! 39530  !              002
          3_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. CASSA !        !        !              003
                                        1_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                            004
                                        2_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                            005
                                        3_!              ! 09.03.2017 ! OI48698    ! 8505       !                                            006

I guess that at 142 I should have 001, 002, 003 repeated 3 times, is it right? I am trying to understand why I have that.

To debug this issue I Stop code right before OUTFIL OMIT,
Code:

...
         OVERLAY=(134:8X)),                       
         IFTHEN=(WHEN=NONE,                       
         OVERLAY=(143:SEQNUM,3,ZD,RESTART=(134,8)))
//                                                 
  OUTFIL OMIT=(134,1,CH,EQ,C' '),                 

and I have this output
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+
              ! DATA_ESTRAZIONE !       CD_FNZ       !        PR_FNZ         ! CD_PRD_FNZ !       CD_CVZ       ! CD_FNZ_DEZ !                   
            1_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !        AAAAAAAA 001
            2_! 16.05.2017      ! CF                 !              199392   ! A1A5       !                    ! 23         !        AAAAAAAA 002
            3_! 16.05.2017      ! CF                 !             1223528   ! A1A5       ! 3777-01            ! 23         !        AAAAAAAA 003
1PAGE    2                                                                                                                                       
          1_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. C/C   ! 01005  ! 39530  !      BBBBBBBB 001
          2_! COMPRAVENDITA 1. CASA           ! ESTSVA     ! AUTORIZZAZIONE SVINCOLO ! MODALITA EROG. C/C   ! 01005  ! 39530  !      BBBBBBBB 002
          3_! COMPRAVENDITA 1. CASA           ! ESTSVN     ! RICHIESTA SVINCOLO      ! MODALITA EROG. CASSA !        !        !      BBBBBBBB 003
1PAGE    3                                                                                                                                       
                                        1_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                    BBBBBBBB 004
                                        2_! 000000011859 ! 24.02.2017 ! OI44054    ! 8505       !                                    BBBBBBBB 005
                                        3_!              ! 09.03.2017 ! OI48698    ! 8505       !                                    BBBBBBBB 006

I did not completely understood why I have these lines of code in Step0100
Code:

        IFTHEN=(WHEN=(134,1,CH,EQ,C' ',AND,       
                      144,1,CH,EQ,C' '),           
       OVERLAY=(134:8C'A')),                       
                                                   
        IFTHEN=(WHEN=(134,1,CH,GT,C' ',AND,       
                      144,1,CH,EQ,C' '),           
       OVERLAY=(134:8C'B')),                       

You don't need spaces to execute the following calculation.
Code:

        IFTHEN=(WHEN=(144,1,CH,GT,C' '),           
       OVERLAY=(134:(134,8,ZD,SUB,144,8,ZD),ADD,+1,
                     M11,LENGTH=8))               

But it's not clear why you need 2nd test (GT than blank, so you might not have blank there?) and put BBBBBBBB

Final output is out of sync, because I have only 2/3 of the first block, then the first line is completed with 1/3 of the 2nd block and so on. If after Step0100 I completely remove first block (9 lines), final output is perfect, but I am still trying to understand why Smile
Thanks
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 11794
Topics: 74
Location: San Jose

PostPosted: Wed May 17, 2017 11:14 am    Post subject: Reply with quote

Fab,

The reason I had to use the A and B with 2 IFTHEN statements was due to the fact that you actually sent the input with the first page missing the header '1page' and your input directly started with the column names. So I had to handle the first missing '1page' header. If your input always has the page header then you do not need the 2 IFTHEN statements.

In the new input you have the '1page' header back again and your 2nd and 3rd group got the same ID of 'B' which messed the resize.

So if your input always begins with page header then here are the updated control cards.

I also optimized the job to dynamically pass the FIRST COLUMN as a symbolic so that you actually only have to change the control cards in one place and not bother about missing any other place.

Here is the updated step0100 control cards, the rest of the job does not need any changes.

Code:

//   SET FCOLUMN='DATA_ESTRAZIONE'                             
//*************************************************************
//* TAG THE RECORDS TO GROUPS AND SORT BASED ON GROUP NUMBER **
//*************************************************************
//STEP0100 EXEC PGM=SORT,PARM='JP1"&FCOLUMN"'                   
//SYSOUT   DD SYSOUT=*                                         
//SORTIN   DD DISP=SHR,DSN=Your Input DSNTEP2 DSN
//SORTOUT  DD DSN=&&TMP,DISP=(,PASS),SPACE=(CYL,(25,25),RLSE)   
//SYSIN    DD *                                                 
  OPTION COPY                                                   
                                                               
  INCLUDE COND=(001,005,CH,EQ,C'1PAGE',OR,                     
                001,133,SS,EQ,C'_|',OR,                         
                001,133,SS,EQ,JP1)                             
                                                               
  INREC IFOUTLEN=142,                                           
        IFTHEN=(WHEN=GROUP,BEGIN=(001,5,CH,EQ,C'1PAGE'),       
          PUSH=(134:ID=8)),                                     
        IFTHEN=(WHEN=GROUP,BEGIN=(001,133,SS,EQ,JP1,AND,             
                                  134,008,ZD,GT,1),                   
          PUSH=(144:134,8)),                                   
                                                               
        IFTHEN=(WHEN=(144,1,CH,GT,C' '),                       
       OVERLAY=(134:(134,8,ZD,SUB,144,8,ZD),ADD,+1,             
                     M11,LENGTH=8))                             
                                                               
  OUTREC IFTHEN=(WHEN=(001,005,CH,EQ,C'1PAGE',OR,               
                       001,133,SS,EQ,JP1),                     
         OVERLAY=(134:8X)),                                     
         IFTHEN=(WHEN=NONE,                                     
         OVERLAY=(143:SEQNUM,3,ZD,RESTART=(134,8)))             
                                                               
  OUTFIL OMIT=(134,1,CH,EQ,C' '),                               
        IFTHEN=(WHEN=GROUP,BEGIN=(134,12,CH,EQ,C'00000001 001'),
                PUSH=(150:ID=8)),                               
        IFTHEN=(WHEN=INIT,                                     
                BUILD=(1,133,150,8,143,3))                     
//*

_________________
Kolusu - DFSORT Development Team (IBM)
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Fab
Beginner


Joined: 15 Nov 2016
Posts: 46
Topics: 5

PostPosted: Thu May 18, 2017 4:03 am    Post subject: Reply with quote

Hi Kolusu,
yes header was removed because it starts with the query executed, basically it was my fault, I deleted everything before beginning of data, 1st 1PAGE included. Now with header back again your sort works perfectly with any input, and it is parametric. Perfect. Thanks much Kolusu.
Back to top
View user's profile Send private message
Fab
Beginner


Joined: 15 Nov 2016
Posts: 46
Topics: 5

PostPosted: Thu May 18, 2017 7:36 am    Post subject: Reply with quote

One more thing about this header, I have seen this morning that if query is beyond 1 page, these sorts behave wrong, example:
Code:

1PAGE    1                                                                                                                           
  -- RICHIESTA ESTRAZIONE PER DATI DA ESPORRE SU GAZZETTA UFFICIALE                                                                   
  -- PER CARTO VOBG6                                                                                                                 
  -- ESTRAZIONE FINANZIAMENTI IN ESSERE AL 31.12.2016                                                                                 
  -- AVENTI 7 CONVENZIONI ACCORDO QUADRO DEL GRUPPO                                                                                   
  -- RICHIESTA :                                                                                                                     
  -- VEDI EMAIL DA xxxxxx      GIOVED~ 18 MAGGIO 2017 10:28                                                                           
  -- VEDI EMAIL DA xxxxxxxxxxx GIOVED~ 18 MAGGIO 2017 10:04                                                                           
  -- xxxxxxx xxxxx 18/5/2017                                                                                                         
  --                                                                                                                                 
 ***INPUT STATEMENT:                                                                                                                 
  SELECT A.CD_FNZ,A.PR_FNZ,                                                                                                           
  A.CD_CVZ       AS CODICE_CONVENZIONE,                                                                                               
  B.DT_ERO      ,                                                                                                                     
  CD_FNZ_STA, CASE CD_FNZ_STA                                                                                                         
  WHEN '00CEN'       THEN 'CENSITO               '                                                                                   
  WHEN '05REQ'       THEN 'RICHIESTO             '                                                                                   
  WHEN '10ANN'       THEN 'ANNULLATO             '                                                                                   
  WHEN '15PRP'       THEN 'PROPOSTO PER DELIBERA '                                                                                   
  WHEN '20DEL'       THEN 'DELIBERATO            '                                                                                   
  WHEN '25PFN'       THEN 'IN PRE-FINANZIAMENTO  '                                                                                   
  WHEN '30STP'       THEN 'STIPULATO             '                                                                                   
  WHEN '35ERO'       THEN 'EROGATO               '                                                                                   
  WHEN '40PAM'       THEN 'IN PRE-AMMORTAMENTO   '                                                                                   
  WHEN '45AMT'       THEN 'IN AMMORTAMENTO       '                                                                                   
  WHEN '55DUB'       THEN 'DUBBIO ESITO          '                                                                                   
  WHEN '60ICA'       THEN 'INCAGLIATO            '                                                                                   
  WHEN '65SOF'       THEN 'IN SOFFERENZA         '                                                                                   
  WHEN '70SOS'       THEN 'SOSPESO               '                                                                                   
  WHEN '90SCDNOESZ'  THEN 'SCADUTO NON ESTINTO   '                                                                                   
  WHEN '95ESZ'       THEN 'ESTINTO               '                                                                                   
  WHEN '97REVOCA'    THEN 'REVOCATO              '                                                                                   
  WHEN '98ANN'       THEN 'ANNULLO LOGICO        '                                                                                   
  WHEN '99RCLPNO'    THEN 'ATTESA RICALCOLO PIANO'                                                                                   
  ELSE 'DESCRIZIONE STATO NON TROVATA'                                                                                               
  END CASE,                                                                                                                           
  CD_FNZ_STA_MOT, CASE CD_FNZ_STA_MOT                                                                                                 
  WHEN '0000DEL   ' THEN 'DELIBERATO                                     '                                                           
  WHEN '0003CDZ   ' THEN 'CONDIZIONATO                                   '                                                           
  WHEN '0010PFNREQ' THEN 'RICHIESTA CONTEGGIO EROGAZIONE CONTESTUALE     '                                                           
  WHEN '0015PFNCNF' THEN 'CONFERMA CONTEGGIO EROGAZIONE CONTESTUALE      '                                                           
  WHEN '0020PFNAZZ' THEN 'AUTORIZZAZIONE CONTEGGIO EROGAZIONE CONTESTUALE'                                                           
  WHEN '0030REQSTP' THEN 'RICHIESTA CONTEGGIO STIPULA                    '                                                           
  WHEN '0090STP   ' THEN 'STIPULATO                                      '                                                           
  WHEN '0100EST   ' THEN 'EROGAZIONE CONTESTUALE                         '                                                           
  WHEN '0105ESTREQ' THEN 'RICHIESTA CONTEGGIO EROGAZIONE CONTESTUALE     '                                                           
  WHEN '0110ESTCNF' THEN 'CONFERMA CONTEGGIO EROGAZIONE CONTESTUALE      '                                                           
  WHEN '0115ESTAZZ' THEN 'AUTORIZZAZIONE EROGAZIONE CONTESTUALE          '                                                           
  WHEN '0120ESTAZS' THEN 'AUTORIZZAZIONE EROGAZIONE DA SVINCOLARE        '                                                           
  WHEN '0125ESTSVN' THEN 'RICHIESTA SVINCOLO                             '                                                           
  WHEN '0130ESTSVA' THEN 'AUTORIZZAZIONE SVINCOLO                        '                                                           
  WHEN '0150ERTAZZ' THEN 'AUTORIZZAZIONE EROGAZIONE TECNICA              '                                                           
  WHEN '0160ERSREQ' THEN 'RICHIESTA CONTEGGIO EROGAZIONE A SALDO         '                                                           
  WHEN '0165ERSCNF' THEN 'CONFERMA CONTEGGIO EROG. A SALDO               '                                                           
  WHEN '0170ERSAZZ' THEN 'AUTORIZZAZIONE EROGAZIONE A SALDO              '                                                           
  WHEN '0305ESAREQ' THEN 'RICHIESTA CONTEGGIO ESA                        '                                                           
  WHEN '0315ESAAZZ' THEN 'AUTORIZZAZIONE ESA                             '                                                           
  WHEN '0900RIFBCA' THEN 'REVOCA ISTITUTO                                '                                                           
  WHEN '0905RIFCLI' THEN 'RINUNCIA CLIENTE                               '                                                           
  WHEN '0910SDF   ' THEN 'SUDDIVISIONE FINANZIAMENTO                     '                                                           
1PAGE    2                                                                                                                           
  WHEN '0912UTZREQ' THEN 'RICHIESTA DI UTILIZZO                          '                                                           
  WHEN '0917SDS   ' THEN 'SUDDIVISIONE A SALDO                           '                                                           
  WHEN '0920ICA   ' THEN 'PASSAGGIO AD INCAGLIATO                        '                                                           
  WHEN '0925RNTICA' THEN 'RIENTRO DA INCAGLIATO                          '                                                           
  WHEN '0940SOF   ' THEN 'PASSAGGIO A SOFFERENZA                         '                                                           
  WHEN '0941RNTSOF' THEN 'RIENTRO DA SOFFERENZA                          '                                                           
  WHEN '0945ESZSOF' THEN 'IN SOFFERENZA CON RISOLUZIONE                  '                                                           
  WHEN '0950RNC   ' THEN 'RINUCIA STIPULA                                '                                                           
  WHEN '0960ESZ   ' THEN 'ESTINZIONE ANTICIPATA                          '                                                           
  WHEN '0961ESZSUR' THEN 'ESTINZIONE SURROGA PASSIVA                     '                                                           
  WHEN '0970FRA   ' THEN 'FRAZIONAMENTO                                  '                                                           
  WHEN '0980ERDIGD' THEN 'ARCHIVIAZIONE PRATICA                          '                                                           
  WHEN '0983ESZPAG' THEN 'ESTINTO PER PAG. ULT. RATA                     '                                                           
  WHEN '0984ESZPRR' THEN 'ESTINTO PER PROROGA                            '                                                           
  WHEN '180SPSRAT ' THEN 'INSERIMENTO RATA DI SPESA                      '                                                           
  ELSE 'DESCRIZIONE MOTIVO STATO NON TROVATA'                                                                                         
  END CASE,                                                                                                                           
  A.DT_INI_VLD_STA_FNZ AS DATA_STATO,                                                                                                 
  A.FL_FNZ_BLK AS CARTO_SI_NO                                                                                                         
                                                                                                                                     
  FROM DB2A0.TBFNZ A, DB2A0.TBERODFNFN B                                                                                             
  WHERE A.CD_BCA='01005'                                                                                                             
                                                                                                                                     
  AND A.CD_FNZ='CF'                                                                                                                   
  AND ((B.DT_ERO < '01.01.2017'                                                                                                       
        AND CD_FNZ_STA ^='95ESZ' AND A.DT_INI_VLD_STA_FNZ < '01.01.2017')                                                             
     OR                                                                                                                               
       (A.CD_FNZ_STA = '95ESZ' AND A.DT_INI_VLD_STA_FNZ > '31.12.2016'))                                                             
  AND A.CD_CVZ IN ('BNPP-PF01','DIP-BNPP01',                                                                                         
                  'BNPP-PF02','DIP-BNPP02',                                                                                           
                  'BNPP-PF03','DIP-BNPP03',                                                                                           
                              'DIP-BNPP04')                                                                                           
  AND A.CD_BCA=B.CD_BCA                                                                                                               
  AND A.CD_FNZ=B.CD_FNZ                                                                                                               
  AND A.PR_FNZ=B.PR_FNZ                                                                                                               
  AND B.DT_CTE_SRN='31.12.9999'                                                                                                       
                                                                                                                                     
  WITH UR                                                                                                                             
                       +--------------------------------------------------------------------------------------------                 
                       |       CD_FNZ       |        PR_FNZ         | CODICE_CONVENZIONE |   DT_ERO   | CD_FNZ_STA |                 
                       +--------------------------------------------------------------------------------------------                 
                     1_| CF                 |              599759   | DIP-BNPP01         | 09.04.2010 | 45AMT      |                 
                     2_| CF                 |              601193   | DIP-BNPP01         | 31.05.2010 | 45AMT      |                 
                     3_| CF                 |              601733   | DIP-BNPP01         | 15.04.2010 | 45AMT      |                 
                     4_| CF                 |              603457   | DIP-BNPP01         | 22.03.2010 | 95ESZ      |                 
                     5_| CF                 |              603701   | DIP-BNPP01         | 16.06.2010 | 45AMT      |                 
                     6_| CF                 |              603835   | DIP-BNPP01         | 06.05.2010 | 45AMT      |                 
                     7_| CF                 |              603841   | DIP-BNPP01         | 23.03.2010 | 45AMT      |                 
                     8_| CF                 |              605499   | DIP-BNPP01         | 19.04.2010 | 45AMT      |                 
                     9_| CF                 |              605566   | DIP-BNPP01         | 29.04.2010 | 45AMT      |                 
                    10_| CF                 |              606752   | DIP-BNPP01         | 30.03.2010 | 45AMT      |                 
                       +--------------------------------------------------------------------------------------------                 
1PAGE    3                                                                                                                           
             -----------------------------------------------------------------------------------------------------------------       
             |             CASE              | CD_FNZ_STA_MOT |                      CASE                       | DATA_STATO |       
             -----------------------------------------------------------------------------------------------------------------       
           1_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.06.2010 |       
           2_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.07.2010 |       
           3_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 18.06.2010 |       
           4_| ESTINTO                       | 0960ESZ        | ESTINZIONE ANTICIPATA                           | 27.01.2017 |       
           5_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.08.2010 |       
           6_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.07.2010 |       
           7_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 06.05.2010 |       
           8_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.06.2010 |       
           9_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 01.06.2010 |       
          10_| IN AMMORTAMENTO               | 0130ESTSVA     | AUTORIZZAZIONE SVINCOLO                         | 28.05.2010 |       
             -----------------------------------------------------------------------------------------------------------------       
1PAGE    4                                                                                                                           
                                                              --------------+                                                         
                                                              | CARTO_SI_NO |                                                         
                                                              --------------+                                                         
                                                            1_|             |                                                         
                                                            2_|             |                                                         
                                                            3_|             |                                                         
                                                            4_|             |                                                         
                                                            5_|             |                                                         
                                                            6_|             |                                                         
                                                            7_|             |                                                         
                                                            8_|             |                                                         
                                                            9_|             |                                                         
                                                           10_|             |                                                         
                                                              --------------+                                                         
1PAGE    5                                                                                                                           
                       +--------------------------------------------------------------------------------------------                 
                       |       CD_FNZ       |        PR_FNZ         | CODICE_CONVENZIONE |   DT_ERO   | CD_FNZ_STA |                 
                       +--------------------------------------------------------------------------------------------                 
                    11_| CF                 |              608761   | DIP-BNPP01         | 30.03.2010 | 45AMT      |                 
                    12_| CF                 |              610595   | DIP-BNPP01         | 23.03.2010 | 45AMT      |                 


As you can see query is very long, it takes more than 1 page, I edited this for input to your sort as follows:
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----
1PAGE    1                                                                                                                           
                       +--------------------------------------------------------------------------------------------                 
                       !       CD_FNZ       !        PR_FNZ         ! CODICE_CONVENZIONE !   DT_ERO   ! CD_FNZ_STA !                 
                       +--------------------------------------------------------------------------------------------                 
                     1_! CF                 !              599759   ! DIP-BNPP01         ! 09.04.2010 ! 45AMT      !                 
                     2_! CF                 !              601193   ! DIP-BNPP01         ! 31.05.2010 ! 45AMT      !                 
                     3_! CF                 !              601733   ! DIP-BNPP01         ! 15.04.2010 ! 45AMT      !                 
                     4_! CF                 !              603457   ! DIP-BNPP01         ! 22.03.2010 ! 95ESZ      !                 
                     5_! CF                 !              603701   ! DIP-BNPP01         ! 16.06.2010 ! 45AMT      !                 
                     6_! CF                 !              603835   ! DIP-BNPP01         ! 06.05.2010 ! 45AMT      !                 
                     7_! CF                 !              603841   ! DIP-BNPP01         ! 23.03.2010 ! 45AMT      !                 
                     8_! CF                 !              605499   ! DIP-BNPP01         ! 19.04.2010 ! 45AMT      !                 
                     9_! CF                 !              605566   ! DIP-BNPP01         ! 29.04.2010 ! 45AMT      !                 
                    10_! CF                 !              606752   ! DIP-BNPP01         ! 30.03.2010 ! 45AMT      !                 
                       +--------------------------------------------------------------------------------------------                 
1PAGE    3                                                                                                                           
             -----------------------------------------------------------------------------------------------------------------       
             !             CASE              ! CD_FNZ_STA_MOT !                      CASE                       ! DATA_STATO !       
             -----------------------------------------------------------------------------------------------------------------
           1_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !
           2_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !
           3_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 18.06.2010 !
           4_! ESTINTO                       ! 0960ESZ        ! ESTINZIONE ANTICIPATA                           ! 27.01.2017 !
           5_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.08.2010 !
           6_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !
           7_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 06.05.2010 !
           8_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !
           9_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !
          10_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 28.05.2010 !
             -----------------------------------------------------------------------------------------------------------------
1PAGE    4                                                                                                                   
                                                              --------------+                                                 
                                                              ! CARTO_SI_NO !                                                 
                                                              --------------+                                                 
                                                            1_!             !                                                 
                                                            2_!             !                                                 
                                                            3_!             !   
                                                            4_!             !   
                                                            5_!             !   
                                                            6_!             !   
                                                            7_!             !   
                                                            8_!             !   
                                                            9_!             !   
                                                           10_!             !   
                                                              --------------+   
1PAGE    5                                                                     
                       +--------------------------------------------------------------------------------------------                                   
                       !       CD_FNZ       !        PR_FNZ         ! CODICE_CONVENZIONE !   DT_ERO   ! CD_FNZ_STA !                                   
                       +--------------------------------------------------------------------------------------------                                   
                    11_! CF                 !              608761   ! DIP-BNPP01         ! 30.03.2010 ! 45AMT      !                                   
                    12_! CF                 !              610595   ! DIP-BNPP01         ! 23.03.2010 ! 45AMT      !                                   
                    13_! CF                 !              613602   ! DIP-BNPP01         ! 15.06.2010 ! 45AMT      !                                   
                    14_! CF                 !              615457   ! DIP-BNPP01         ! 25.05.2010 ! 45AMT      !                                   
                    15_! CF                 !              615763   ! DIP-BNPP01         ! 21.04.2010 ! 45AMT      !                                   

I thought that it was fine, header it's there, we have 3 blocks so each line will be 3*131 = 393. At the end of step0100 file is elaborated as follows:
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----
                     1_! CF                 !              599759   ! DIP-BNPP01         ! 09.04.2010 ! 45AMT      !                 00000001001
                     2_! CF                 !              601193   ! DIP-BNPP01         ! 31.05.2010 ! 45AMT      !                 00000001002
                     3_! CF                 !              601733   ! DIP-BNPP01         ! 15.04.2010 ! 45AMT      !                 00000001003
                     4_! CF                 !              603457   ! DIP-BNPP01         ! 22.03.2010 ! 95ESZ      !                 00000001004
                     5_! CF                 !              603701   ! DIP-BNPP01         ! 16.06.2010 ! 45AMT      !                 00000001005
                     6_! CF                 !              603835   ! DIP-BNPP01         ! 06.05.2010 ! 45AMT      !                 00000001006
                     7_! CF                 !              603841   ! DIP-BNPP01         ! 23.03.2010 ! 45AMT      !                 00000001007
                     8_! CF                 !              605499   ! DIP-BNPP01         ! 19.04.2010 ! 45AMT      !                 00000001008
                     9_! CF                 !              605566   ! DIP-BNPP01         ! 29.04.2010 ! 45AMT      !                 00000001009
                    10_! CF                 !              606752   ! DIP-BNPP01         ! 30.03.2010 ! 45AMT      !                 00000001010
           1_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001011
           2_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !       00000001012
           3_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 18.06.2010 !       00000001013
           4_! ESTINTO                       ! 0960ESZ        ! ESTINZIONE ANTICIPATA                           ! 27.01.2017 !       00000001014
           5_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.08.2010 !       00000001015
           6_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !       00000001016
           7_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 06.05.2010 !       00000001017
           8_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001018
           9_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001019
          10_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 28.05.2010 !       00000001020
                                                            1_!             !                                                        00000001001
                                                            2_!             !                                                        00000001002
                                                            3_!             !                                                        00000001003
                                                            4_!             !                                                        00000001004
                                                            5_!             !                                                        00000001005
                                                            6_!             !                                                        00000001006
                                                            7_!             !                                                        00000001007
                                                            8_!             !                                                        00000001008
                                                            9_!             !                                                        00000001009
                                                           10_!             !                                                        00000001010
                    11_! CF                 !              608761   ! DIP-BNPP01         ! 30.03.2010 ! 45AMT      !                 00000002001
                    12_! CF                 !              610595   ! DIP-BNPP01         ! 23.03.2010 ! 45AMT      !                 00000002002
                    13_! CF                 !              613602   ! DIP-BNPP01         ! 15.06.2010 ! 45AMT      !                 00000002003
                    14_! CF                 !              615457   ! DIP-BNPP01         ! 25.05.2010 ! 45AMT      !                 00000002004
                    15_! CF                 !              615763   ! DIP-BNPP01         ! 21.04.2010 ! 45AMT      !                 00000002005
                    16_! CF                 !              616225   ! DIP-BNPP01         ! 19.07.2010 ! 45AMT      !                 00000002006

Step0100 code I executed
Code:

//   SET FCOLUMN='CD_FNZ'                                             

  OPTION COPY                                                         
                                                                       
  INCLUDE COND=(001,005,CH,EQ,C'1PAGE',OR,                             
                001,133,SS,EQ,C'_!',OR,                               
                001,133,SS,EQ,JP1)                                     
                                                                       
  INREC IFOUTLEN=142,                                                 
        IFTHEN=(WHEN=GROUP,BEGIN=(001,5,CH,EQ,C'1PAGE'),       
          PUSH=(134:ID=8)),                                     
        IFTHEN=(WHEN=GROUP,BEGIN=(001,133,SS,EQ,JP1,AND,       
                                  134,008,ZD,GT,1),             
          PUSH=(144:134,8)),                                   
                                                               
        IFTHEN=(WHEN=(144,1,CH,GT,C' '),                       
       OVERLAY=(134:(134,8,ZD,SUB,144,8,ZD),ADD,+1,             
                     M11,LENGTH=8))                             
                                                               
  OUTREC IFTHEN=(WHEN=(001,005,CH,EQ,C'1PAGE',OR,               
                       001,133,SS,EQ,JP1),                     
         OVERLAY=(134:8X)),                                     
         IFTHEN=(WHEN=NONE,                                     
         OVERLAY=(143:SEQNUM,3,ZD,RESTART=(134,8)))             
                                                               
  OUTFIL OMIT=(134,1,CH,EQ,C' '),                               
        IFTHEN=(WHEN=GROUP,BEGIN=(134,12,CH,EQ,C'00000001 001'),
                PUSH=(150:ID=8)),                               
        IFTHEN=(WHEN=INIT,               
                BUILD=(1,133,150,8,143,3))

As you can see first block is calculated wrong (well I've checked that all blocks are calculated in the same way, first two parts are calculated as a bigger one). Final line's width is wrongly calculate to 262, instead that 393.
I already used this jcl many times this morning and it was perfect in every run, even with 5 block (each line 131*5). I Wonder why in this case we have wrong calculation. The only difference I see is that query is longer than the other ones I've used and that ugly 3rd block full of blanks. Did I edited the input in a wrong way?
Thanks


Last edited by Fab on Thu May 18, 2017 9:14 am; edited 1 time in total
Back to top
View user's profile Send private message
Fab
Beginner


Joined: 15 Nov 2016
Posts: 46
Topics: 5

PostPosted: Thu May 18, 2017 8:02 am    Post subject: Reply with quote

Still debugging, stop step0100 just before OUTFIL I see this
Code:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+
1PAGE    1                                                                                                                                       
                       !       CD_FNZ       !        PR_FNZ         ! CODICE_CONVENZIONE !   DT_ERO   ! CD_FNZ_STA !                             
                     1_! CF                 !              599759   ! DIP-BNPP01         ! 09.04.2010 ! 45AMT      !                 00000001 001
                     2_! CF                 !              601193   ! DIP-BNPP01         ! 31.05.2010 ! 45AMT      !                 00000001 002
                     3_! CF                 !              601733   ! DIP-BNPP01         ! 15.04.2010 ! 45AMT      !                 00000001 003
                     4_! CF                 !              603457   ! DIP-BNPP01         ! 22.03.2010 ! 95ESZ      !                 00000001 004
                     5_! CF                 !              603701   ! DIP-BNPP01         ! 16.06.2010 ! 45AMT      !                 00000001 005
                     6_! CF                 !              603835   ! DIP-BNPP01         ! 06.05.2010 ! 45AMT      !                 00000001 006
                     7_! CF                 !              603841   ! DIP-BNPP01         ! 23.03.2010 ! 45AMT      !                 00000001 007
                     8_! CF                 !              605499   ! DIP-BNPP01         ! 19.04.2010 ! 45AMT      !                 00000001 008
                     9_! CF                 !              605566   ! DIP-BNPP01         ! 29.04.2010 ! 45AMT      !                 00000001 009
                    10_! CF                 !              606752   ! DIP-BNPP01         ! 30.03.2010 ! 45AMT      !                 00000001 010
1PAGE    3                                                                                                                                       
             !             CASE              ! CD_FNZ_STA_MOT !                      CASE                       ! DATA_STATO !                   
           1_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001 011
           2_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !       00000001 012
           3_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 18.06.2010 !       00000001 013
           4_! ESTINTO                       ! 0960ESZ        ! ESTINZIONE ANTICIPATA                           ! 27.01.2017 !       00000001 014
           5_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.08.2010 !       00000001 015
           6_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.07.2010 !       00000001 016
           7_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 06.05.2010 !       00000001 017
           8_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001 018
           9_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 01.06.2010 !       00000001 019
          10_! IN AMMORTAMENTO               ! 0130ESTSVA     ! AUTORIZZAZIONE SVINCOLO                         ! 28.05.2010 !       00000001 020
1PAGE    4                                                                                                                                       
                                                            1_!             !                                                        00000002 001
                                                            2_!             !                                                        00000002 002
                                                            3_!             !                                                        00000002 003
                                                            4_!             !                                                        00000002 004
                                                            5_!             !                                                        00000002 005
                                                            6_!             !                                                        00000002 006
                                                            7_!             !                                                        00000002 007
                                                            8_!             !                                                        00000002 008
                                                            9_!             !                                                        00000002 009
                                                           10_!             !                                                        00000002 010
1PAGE    5                                                                                                                                       
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 11794
Topics: 74
Location: San Jose

PostPosted: Thu May 18, 2017 4:18 pm    Post subject: Reply with quote

Fab,

I am done working on this moving target request. This is my final stab at it. I ran this job with all the different input you have shown so far and everything worked. So if you come up with a different variation, I am not going any spend time to refit the same solution. I actually could have written a COBOL within an hour to handle this kind of request.

Important : The first column to be passed a parm needs a space at the end This is done to avoid any false hits that may stem from the SELECT statement.

Code:

//   SET FCOLUMN='CD_FNZ '                                     
//*************************************************************
//* TAG THE RECORDS TO GROUPS AND SORT BASED ON GROUP NUMBER **
//*************************************************************
//STEP0100 EXEC PGM=SORT,PARM='JP1"&FCOLUMN"'                 
//SYSOUT   DD SYSOUT=*                                         
//SORTIN   DD DISP=SHR,DSN=KOLUSU.DSNTEP2.OUTPUT.FAB4         
//SORTOUT  DD DSN=&&TMP,DISP=(,PASS),SPACE=(CYL,(25,25),RLSE) 
//SYSIN    DD *                                               
  OPTION COPY                                                 
                                                               
  INCLUDE COND=(001,005,CH,EQ,C'1PAGE',OR,                     
                001,133,SS,EQ,C'_|',OR,                       
                001,133,SS,EQ,JP1)                             
                                                               
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(001,133,SS,EQ,C'|',AND,     
                                  001,133,SS,EQ,JP1),         
          PUSH=(134:ID=8)),                                   
        IFTHEN=(WHEN=GROUP,BEGIN=(001,5,CH,EQ,C'1PAGE'),       
          PUSH=(143:ID=8)),                                   
                                                               
        IFTHEN=(WHEN=INIT,                                     
       OVERLAY=(153:SEQNUM,3,ZD,RESTART=(134,17))),           
                                                               
        IFTHEN=(WHEN=(001,005,CH,EQ,C'1PAGE',OR,               
                       001,133,SS,EQ,JP1),                     
       OVERLAY=(134:8X))                                       
                                                               
  OUTFIL OMIT=(134,1,CH,EQ,C' '),                             
         BUILD=(1,133,134,8,153,3)                             
//*   
//*************************************************************
//* SORT THE RECORDS SO THE DATA IS ORDERED AS IN DB2 TABLE  **
//*************************************************************
//STEP0200 EXEC PGM=SORT                                       
//SYSOUT   DD SYSOUT=*                                         
//SORTIN   DD DSN=&&TMP,DISP=SHR                               
//SORTOUT  DD DSN=&&DAF,DISP=(,PASS),SPACE=(CYL,(25,25),RLSE)   
//TLN      DD DSN=&&TLN,DISP=(,PASS),SPACE=(TRK,(1,0),RLSE)     
//SYSIN    DD *                                                 
  SORT FIELDS=(134,8,CH,A,                                     
               142,3,CH,A),EQUALS                               
                                                               
  OUTREC OVERLAY=(147:SEQNUM,3,ZD,RESTART=(134,11),             
                  152:147,3,ZD,MUL,+131,M11,LENGTH=5)           
                                                               
  OUTFIL IFTHEN=(WHEN=INIT,BUILD=(2,132)),                     
         IFTHEN=(WHEN=INIT,                                     
         PARSE=(%01=(STARTAFT=C'_',FIXLEN=132)),               
              BUILD=(%01,JFY=(SHIFT=LEFT))),                   
         IFTHEN=(WHEN=INIT,BUILD=(2,131))                       
                                                               
  OUTFIL FNAMES=TLN,REMOVECC,NODETAIL,BUILD=(80X),             
  TRAILER1=(3:'TOLEN(',                                         
            MAX=(152,5,ZD,EDIT=(TTTTT)),                       
            ')')                                               
//*                                                             
//**************************************************************
//*   NOW RESIZE THE DATA INTO A SINGLE RECORD                **
//**************************************************************
//STEP0300 EXEC PGM=ICETOOL                                     
//TOOLMSG  DD SYSOUT=*                                         
//DFSMSG   DD SYSOUT=*                                         
//DAF      DD DISP=(OLD,PASS),DSN=&&DAF                         
//OUT      DD SYSOUT=*                                         
//TOOLIN   DD *                                                 
  RESIZE FROM(DAF) TO(OUT) -                                   
//         DD DISP=(OLD,PASS),DSN=&&TLN

_________________
Kolusu - DFSORT Development Team (IBM)
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities All times are GMT - 5 Hours
Goto page Previous  1, 2, 3
Page 3 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group