CMPPFM, Space offset error.

145 pts.
Tags:
CMPPFM
SQL Exception
SQL/400
Hello, I'm using the IBM CMPPFM utility for a file comparision process. I monitor for msg SPC5010 (file is too big ), if this occurs I submit an SQL EXCEPT to compare the files. This has been working fine until recently, now I'm getting the following error on one file, Space offset X'00FFF026' or X'0000000000000000' is outside current limit for object CMNEWBUF. Dump output directed to spooled file 22, job 463051. Function check. MCH0601 unmonitored by QDBGETM at statement *N, instruction X'0840'. Dump output directed to spooled file 25, job 463051 created on system HFSYSADV on 02/23/09 13:37:14. Maximum number of records reached for file QPSRVDMP. (C R NOMAX 1-999999) C Number of records written by program exceeds 100000. Error message CPF5116 received for file QPSRVDMP. Request ended. Failure for device or member HIP file HIPOK3 CMPPFM ended in error. This file has DDS over it, however if I copy to a flat file and run, I get the SPC5010 error instead of the dump. Any information would be greatly appreciated!

Answer Wiki

Thanks. We'll let you know when a new response is added.

CMPPFM is pretty resource intensive for big stuff.

Why not read and compare the two file in a HLL?

You can write an RPG pgm with program defined file lengths of “very big” and use OVRDBF at run time to point them at the files you want.

If you make the records defined as either a sinmgle field, you can do simple compares, or define themn as arrays, and collect the record definitions of the ‘real’ files, parse to the fields involved which differ, and write out useful information.

If you’re like me and you only wanted to verify your testing without going to the added trouble of writing more programs, you might find this CLP useful. It divides up the two files into segments and compares the segments in QTEMP.

<pre> 5722WDS V5R4M0 060210 SEU SOURCE LISTING 02/25/09 09:21:52 GAMMA PAGE 1
SOURCE FILE . . . . . . . STHOMPSO/SOURCE
MEMBER . . . . . . . . . CMPRMANY
SEQNBR*…+… 1 …+… 2 …+… 3 …+… 4 …+… 5 …+… 6 …+… 7 …+… 8 …+… 9 …+… 0
100 /* Created ON: 052098 */ 05/21/98
200 /* PROGRAMMER: STHOMPSO */ 05/14/98
300 /* Purpose: Testing Utility */ 05/21/98
400 /* */ 09/21/95
401 /* CMPPFM on files greater than maximum allowed (in V4R4 this */ 01/24/00
500 /* varies with record length: (16meg/rec.len. +11) – 100 */ 01/24/00
900 /*****************************************************************/ 09/21/95
10800 05/07/86
10900 PGM PARM(&NEWFIL &NEWLIB &OLDFIL &OLDLIB) 05/21/98
11000 11/09/93
12400 11/10/93
12500 /* DECLARE PROGRAM CONTROL VARIABLES */ 11/10/93
12600 11/09/93
12601 DCL VAR(&MAXREC) TYPE(*DEC) LEN(10 0) VALUE(153719) 01/24/00
12602 DCL VAR(&NUMREC) TYPE(*DEC) LEN(10 0) 05/21/98
12603 DCL VAR(&NUMLFT) TYPE(*DEC) LEN(10 0) VALUE(0) 05/21/98
12604 DCL VAR(&SEGMTS) TYPE(*DEC) LEN(6 0) VALUE(0) 05/21/98
12605 DCL VAR(&START) TYPE(*DEC) LEN(10 0) VALUE(0) 05/21/98
12606 DCL VAR(&END) TYPE(*DEC) LEN(10 0) VALUE(0) 05/21/98
12607 DCL VAR(&NEWFIL) TYPE(*CHAR) LEN(10) 05/21/98
12608 DCL VAR(&NEWLIB) TYPE(*CHAR) LEN(10) 05/21/98
12609 DCL VAR(&OLDFIL) TYPE(*CHAR) LEN(10) 05/21/98
12610 DCL VAR(&OLDLIB) TYPE(*CHAR) LEN(10) 05/21/98
12611 05/21/98
12612 RTVMBRD FILE(&NEWLIB/&NEWFIL) NBRCURRCD(&NUMREC) 05/21/98
12613 IF COND(&NUMREC *LT &MAXREC) THEN(GOTO + 01/24/00
12614 CMDLBL(ONLYONE)) 05/21/98
12615 05/21/98
12616 CPYF FROMFILE(&NEWLIB/&NEWFIL) + 05/21/98
12617 TOFILE(QTEMP/&NEWFIL) MBROPT(*ADD) + 05/21/98
12618 CRTFILE(*YES) TORCD(&MAXREC) 01/24/00
30601 CPYF FROMFILE(&OLDLIB/&OLDFIL) + 05/21/98
30602 TOFILE(QTEMP/&OLDFIL) MBROPT(*ADD) + 05/21/98
30603 CRTFILE(*YES) TORCD(&MAXREC) 01/24/00
30700 CMPPFM NEWFILE(QTEMP/&NEWFIL) + 05/21/98
30800 OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) + 05/21/98
30801 OUTPUT(*PRINT) 05/21/98
30900 11/09/93
30901 CHGVAR VAR(&NUMLFT) VALUE(&NUMREC) 06/12/98
30902 CHGVAR VAR(&SEGMTS) VALUE(&SEGMTS + 1) 05/21/98
30903 05/21/98
30904 LOOP: CHGVAR VAR(&NUMLFT) VALUE(&NUMLFT – &MAXREC) /* How + 01/24/00
30905 many are left? */ 05/21/98
30906 05/21/98
30907 IF COND(&NUMLFT *GT &MAXREC) THEN(GOTO + 01/24/00
30908 CMDLBL(MORE)) 05/21/98
30909 05/21/98
30910 ELSE CMD(GOTO CMDLBL(LASTONE)) 05/21/98
34900 11/09/93
34901 MORE: CHGVAR VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1) 01/24/00
35000 CHGVAR VAR(&SEGMTS) VALUE(&SEGMTS + 1) 05/21/98
35103 CHGVAR VAR(&END) VALUE(&SEGMTS * &MAXREC) 01/24/00
35104 05/21/98
5722WDS V5R4M0 060210 SEU SOURCE LISTING 02/25/09 09:21:52 GAMMA PAGE 2
SOURCE FILE . . . . . . . STHOMPSO/SOURCE
MEMBER . . . . . . . . . CMPRMANY
SEQNBR*…+… 1 …+… 2 …+… 3 …+… 4 …+… 5 …+… 6 …+… 7 …+… 8 …+… 9 …+… 0
35105 CPYF FROMFILE(&NEWLIB/&NEWFIL) + 05/21/98
35106 TOFILE(QTEMP/&NEWFIL) MBROPT(*REPLACE) + 05/21/98
35107 FROMRCD(&START) TORCD(&END) 05/21/98
35109 CPYF FROMFILE(&OLDLIB/&OLDFIL) + 05/21/98
35110 TOFILE(QTEMP/&OLDFIL) MBROPT(*REPLACE) + 05/21/98
35111 FROMRCD(&START) TORCD(&END) 05/21/98
35112 CMPPFM NEWFILE(QTEMP/&NEWFIL) + 05/21/98
35113 OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) + 05/21/98
35114 OUTPUT(*PRINT) 05/21/98
35115 05/21/98
35116 GOTO CMDLBL(LOOP) /* go around again */ 06/12/98
35117 06/12/98
35118 LASTONE: CHGVAR VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1) 01/24/00
35119 05/21/98
35120 CPYF FROMFILE(&NEWLIB/&NEWFIL) + 05/21/98
35121 TOFILE(QTEMP/&NEWFIL) MBROPT(*REPLACE) + 05/21/98
35122 FROMRCD(&START) TORCD(*END) 05/21/98
35123 CPYF FROMFILE(&OLDLIB/&OLDFIL) + 05/21/98
35124 TOFILE(QTEMP/&OLDFIL) MBROPT(*REPLACE) + 05/21/98
35125 FROMRCD(&START) TORCD(*END) 05/21/98
35126 COMPLAST: CMPPFM NEWFILE(QTEMP/&NEWFIL) + 05/21/98
35127 OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) + 05/21/98
35128 OUTPUT(*PRINT) 05/21/98
35129 GOTO CMDLBL(ENDCLPPGM) 05/21/98
35130 05/21/98
35131 ONLYONE: CHGVAR VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1) 01/24/00
35132 05/21/98
35133 CPYF FROMFILE(&NEWLIB/&NEWFIL) + 05/21/98
35134 TOFILE(QTEMP/&NEWFIL) MBROPT(*ADD) + 05/21/98
35135 CRTFILE(*YES) + 05/21/98
35136 FROMRCD(&START) TORCD(*END) 05/21/98
35137 CPYF FROMFILE(&OLDLIB/&OLDFIL) + 05/21/98
35138 TOFILE(QTEMP/&OLDFIL) MBROPT(*ADD) + 05/21/98
35139 CRTFILE(*YES) + 05/21/98
35140 FROMRCD(&START) TORCD(*END) 05/21/98
35141 GOTO CMDLBL(COMPLAST) 05/21/98
35142 05/21/98
35143 05/21/98
35200 ENDCLPPGM: 06/19/98
35201 DLTF FILE(QTEMP/&OLDFIL) 06/19/98
35202 DLTF FILE(QTEMP/&NEWFIL) /* get rid of them so + 06/19/98
35203 another step in the same job can re-use + 06/19/98
35204 the files — otherwise records get added */ 06/19/98
35205 ENDPGM 06/19/98
35300 05/21/98
* * * * E N D O F S O U R C E * * * *</pre>

Discuss This Question: 2  Replies

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when members answer or reply to this question.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
  • Sudzie
    If you're like me, and only want to verify your testing without going to the trouble of writing more programs, you might find this CLP useful. It creates segments of the two files in QTEMP of a size that will be small enough, and keeps comparing the segments.
      5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            02/25/09 09:21:52    GAMMA        PAGE    1
      SOURCE FILE . . . . . . .  STHOMPSO/SOURCE
      MEMBER  . . . . . . . . .  CMPRMANY
      SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
        100 /*                      Created ON: 052098                       */                                             05/21/98
        200 /*                      PROGRAMMER: STHOMPSO                     */                                             05/14/98
        300 /*                      Purpose:    Testing Utility              */                                             05/21/98
        400 /*                                                               */                                             09/21/95
        401 /* CMPPFM on files greater than maximum allowed (in V4R4 this    */                                             01/24/00
        500 /*  varies with record length: (16meg/rec.len. +11) - 100        */                                             01/24/00
        900 /*****************************************************************/                                             09/21/95
      10800                                                                                                                 05/07/86
      10900              PGM        PARM(&NEWFIL &NEWLIB &OLDFIL &OLDLIB)                                                   05/21/98
      11000                                                                                                                 11/09/93
      12400                                                                                                                 11/10/93
      12500 /*   DECLARE PROGRAM CONTROL VARIABLES           */                                                             11/10/93
      12600                                                                                                                 11/09/93
      12601              DCL        VAR(&MAXREC) TYPE(*DEC) LEN(10 0) VALUE(153719)                                         01/24/00
      12602              DCL        VAR(&NUMREC) TYPE(*DEC) LEN(10 0)                                                       05/21/98
      12603              DCL        VAR(&NUMLFT) TYPE(*DEC) LEN(10 0) VALUE(0)                                              05/21/98
      12604              DCL        VAR(&SEGMTS) TYPE(*DEC) LEN(6 0) VALUE(0)                                               05/21/98
      12605              DCL        VAR(&START) TYPE(*DEC) LEN(10 0) VALUE(0)                                               05/21/98
      12606              DCL        VAR(&END) TYPE(*DEC) LEN(10 0)   VALUE(0)                                               05/21/98
      12607              DCL        VAR(&NEWFIL) TYPE(*CHAR) LEN(10)                                                        05/21/98
      12608              DCL        VAR(&NEWLIB) TYPE(*CHAR) LEN(10)                                                        05/21/98
      12609              DCL        VAR(&OLDFIL) TYPE(*CHAR) LEN(10)                                                        05/21/98
      12610              DCL        VAR(&OLDLIB) TYPE(*CHAR) LEN(10)                                                        05/21/98
      12611                                                                                                                 05/21/98
      12612              RTVMBRD    FILE(&NEWLIB/&NEWFIL) NBRCURRCD(&NUMREC)                                                05/21/98
      12613              IF         COND(&NUMREC *LT &MAXREC) THEN(GOTO +                                                   01/24/00
      12614                           CMDLBL(ONLYONE))                                                                      05/21/98
      12615                                                                                                                 05/21/98
      12616              CPYF       FROMFILE(&NEWLIB/&NEWFIL) +                                                             05/21/98
      12617                           TOFILE(QTEMP/&NEWFIL) MBROPT(*ADD) +                                                  05/21/98
      12618                           CRTFILE(*YES) TORCD(&MAXREC)                                                          01/24/00
      30601              CPYF       FROMFILE(&OLDLIB/&OLDFIL) +                                                             05/21/98
      30602                           TOFILE(QTEMP/&OLDFIL) MBROPT(*ADD) +                                                  05/21/98
      30603                           CRTFILE(*YES) TORCD(&MAXREC)                                                          01/24/00
      30700              CMPPFM     NEWFILE(QTEMP/&NEWFIL) +                                                                05/21/98
      30800                           OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) +                                             05/21/98
      30801                           OUTPUT(*PRINT)                                                                        05/21/98
      30900                                                                                                                 11/09/93
      30901              CHGVAR     VAR(&NUMLFT) VALUE(&NUMREC)                                                             06/12/98
      30902              CHGVAR     VAR(&SEGMTS) VALUE(&SEGMTS + 1)                                                         05/21/98
      30903                                                                                                                 05/21/98
      30904  LOOP:       CHGVAR     VAR(&NUMLFT) VALUE(&NUMLFT - &MAXREC) /* How +                                          01/24/00
      30905                           many are left? */                                                                     05/21/98
      30906                                                                                                                 05/21/98
      30907              IF         COND(&NUMLFT *GT &MAXREC) THEN(GOTO +                                                   01/24/00
      30908                           CMDLBL(MORE))                                                                         05/21/98
      30909                                                                                                                 05/21/98
      30910              ELSE       CMD(GOTO CMDLBL(LASTONE))                                                               05/21/98
      34900                                                                                                                 11/09/93
      34901  MORE:       CHGVAR     VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1)                                              01/24/00
      35000              CHGVAR     VAR(&SEGMTS) VALUE(&SEGMTS + 1)                                                         05/21/98
      35103              CHGVAR     VAR(&END) VALUE(&SEGMTS * &MAXREC)                                                      01/24/00
      35104                                                                                                                 05/21/98
      5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            02/25/09 09:21:52    GAMMA        PAGE    2
      SOURCE FILE . . . . . . .  STHOMPSO/SOURCE
      MEMBER  . . . . . . . . .  CMPRMANY
      SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
      35105              CPYF       FROMFILE(&NEWLIB/&NEWFIL) +                                                             05/21/98
      35106                           TOFILE(QTEMP/&NEWFIL) MBROPT(*REPLACE) +                                              05/21/98
      35107                           FROMRCD(&START) TORCD(&END)                                                           05/21/98
      35109              CPYF       FROMFILE(&OLDLIB/&OLDFIL) +                                                             05/21/98
      35110                           TOFILE(QTEMP/&OLDFIL) MBROPT(*REPLACE) +                                              05/21/98
      35111                           FROMRCD(&START) TORCD(&END)                                                           05/21/98
      35112              CMPPFM     NEWFILE(QTEMP/&NEWFIL) +                                                                05/21/98
      35113                           OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) +                                             05/21/98
      35114                           OUTPUT(*PRINT)                                                                        05/21/98
      35115                                                                                                                 05/21/98
      35116              GOTO       CMDLBL(LOOP) /* go around again */                                                      06/12/98
      35117                                                                                                                 06/12/98
      35118  LASTONE:    CHGVAR     VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1)                                              01/24/00
      35119                                                                                                                 05/21/98
      35120              CPYF       FROMFILE(&NEWLIB/&NEWFIL) +                                                             05/21/98
      35121                           TOFILE(QTEMP/&NEWFIL) MBROPT(*REPLACE) +                                              05/21/98
      35122                           FROMRCD(&START) TORCD(*END)                                                           05/21/98
      35123              CPYF       FROMFILE(&OLDLIB/&OLDFIL) +                                                             05/21/98
      35124                           TOFILE(QTEMP/&OLDFIL) MBROPT(*REPLACE) +                                              05/21/98
      35125                           FROMRCD(&START) TORCD(*END)                                                           05/21/98
      35126  COMPLAST:   CMPPFM     NEWFILE(QTEMP/&NEWFIL) +                                                                05/21/98
      35127                           OLDFILE(QTEMP/&OLDFIL) RPTTYPE(*CHANGE) +                                             05/21/98
      35128                           OUTPUT(*PRINT)                                                                        05/21/98
      35129              GOTO       CMDLBL(ENDCLPPGM)                                                                       05/21/98
      35130                                                                                                                 05/21/98
      35131  ONLYONE:    CHGVAR     VAR(&START) VALUE((&SEGMTS * &MAXREC) + 1)                                              01/24/00
      35132                                                                                                                 05/21/98
      35133              CPYF       FROMFILE(&NEWLIB/&NEWFIL) +                                                             05/21/98
      35134                           TOFILE(QTEMP/&NEWFIL) MBROPT(*ADD) +                                                  05/21/98
      35135                           CRTFILE(*YES)                      +                                                  05/21/98
      35136                           FROMRCD(&START) TORCD(*END)                                                           05/21/98
      35137              CPYF       FROMFILE(&OLDLIB/&OLDFIL) +                                                             05/21/98
      35138                           TOFILE(QTEMP/&OLDFIL) MBROPT(*ADD) +                                                  05/21/98
      35139                           CRTFILE(*YES)                      +                                                  05/21/98
      35140                           FROMRCD(&START) TORCD(*END)                                                           05/21/98
      35141              GOTO       CMDLBL(COMPLAST)                                                                        05/21/98
      35142                                                                                                                 05/21/98
      35143                                                                                                                 05/21/98
      35200  ENDCLPPGM:                                                                                                     06/19/98
      35201              DLTF       FILE(QTEMP/&OLDFIL)                                                                     06/19/98
      35202              DLTF       FILE(QTEMP/&NEWFIL) /* get rid of them so +                                             06/19/98
      35203                           another step in the same job can re-use +                                             06/19/98
      35204                           the files -- otherwise records get added */                                           06/19/98
      35205              ENDPGM                                                                                             06/19/98
      35300                                                                                                                 05/21/98
                                      * * * *  E N D  O F  S O U R C E  * * * *
    40 pointsBadges:
    report
  • Xtreme1
    Thank you for the response. My colleagues and I are discussing alternatives to avoid using the CMPPFM at all, since it's obvious IBM hasn't ironed out all the issues with using it.
    145 pointsBadges:
    report

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

To follow this tag...

There was an error processing your information. Please try again later.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Thanks! We'll email you when relevant content is added and updated.

Following