× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



The programs are pretty short, so I'm posting the code below. How would I
know if the first program is using teraspace memory? Also, it's not using
pointers or doing anything else fancy (I don't think?).

Code for first program:
        *************** Beginning of data
**********************************************
0001.00 DPARM1            DS                                              
             
0002.00 D INPUT                         15A                               
             
0003.00 DPARM2            DS                  OCCURS(1)                   
             
0004.00 D OUTPUT                        15A                               
             
0005.00 DROW              S              1  0                             
             
0006.00  *                                                                
             
0007.00 D TstRA           S              1    DIM(50)                     
             
0008.00 D Char40          C                   CONST(X'40')                
        Space
0009.00 D CharF9          C                   CONST(X'F9')                
        '9'  
0010.00 C     *ENTRY        PLIST                                         
             
0011.00 C                   PARM                    PARM1                 
             
0012.00  *                                                                
             
0013.00  * remove null characters from ends of passed parms               
             
0014.00 C                   MOVEA     PARM1         TstRA                 
             
0015.00 C                   EXSR      $CLEAN                              
             
0016.00 C                   MOVEA     TstRA         PARM1                 
             
0017.00 C                   CALL      'PGM002C'                           
             
0018.00 C                   PARM                    INPUT                 
             
0019.00  *                                                                
             
0020.00 C                   MOVEL     INPUT         OUTPUT               
0021.00 C                   MOVE      1             ROW                  
0022.00 C/EXEC SQL SET RESULT SETS ARRAY :PARM2 FOR :ROW ROWS            
0023.00 C/END-EXEC                                                       
0024.00 C                   RETURN                                       
0025.00  *************************************************               
0026.00 C     $CLEAN        BEGSR                                        
0027.00  *                                                               
0028.00  * remove null character(s) from passed parms                    
0029.00  *                                                               
0030.00 C                   Z-ADD     0             P                 2 0
0031.00 C     P             DOWLT     50                                 
0032.00 C                   ADD       1             P                    
0033.00 C     TstRA(P)      IFLT      Char40                             
0034.00 C     TstRA(P)      ORGT      CharF9                             
0035.00 C                   MOVEA     *BLANKS       TstRA(P)             
0036.00 C                   ENDIF                                        
0037.00 C                   ENDDO                                        
0038.00  *                                                               
0039.00 C                   ENDSR                                        
0040.00  /EJECT                                                          
        ****************** End of data **********************************

Code for second program:
        *************** Beginning of data ****************************
0001.00              PGM        (&ITEM)                               
0002.00              DCL        &ITEM *CHAR 15                        
0003.00                                                               
0004.00              OVRDBF     IWIL04      (BPCSF/IWIL04  )          
0005.00              OVRDBF     ECLL95      (BPCSF/ECLL95  )          
0006.00              OVRDBF     ECHL01      (BPCSF/ECHL01  )          
0007.00              OVRDBF     FMAL08      (BPCSF/FMAL08  )          
0008.00              OVRDBF     FSOL98      (BPCSF/FSOL98  )          
0009.00              OVRDBF     @FSO        (BPCSF/@FSO    )          
0010.00              OVRDBF     @SOCL02     (BPCSF/@SOCL02 )          
0011.00              OVRDBF     ILIL01      (BPCSF/ILIL01  )          
0012.00              OVRDBF     IIML01      (BPCSF/IIML01  )          
0013.00              OVRDBF     @ILT        (BPCSF/@ILT    )          
0014.00              OVRDBF     @IMRL02     (BPCSF/@IMRL02 )          
0015.00              OVRDBF     @SLD        (BPCSF/@SLD    )          
0016.00                                                               
0017.00              SNDMSG     MSG('ITEM:' *CAT &ITEM *CAT '>') +    <<<
it breaks here
0018.00                           TOMSGQ(MYLOGMSGQ)                    
0019.00                                                               
0020.00              CALL       PGM(PGM002) PARM(&ITEM)           
0021.00                                                           
0022.00              DLTOVR     *ALL                              
0023.00              ENDPGM                                       
        ****************** End of data ***************************

Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx> on Monday,
June 05, 2006 at 1:01 PM -0500 wrote:
Is it possible that the program that removes the null terminator and pads 
it with spaces is using teraspace memory to do that?   If so, that'd 
explain why you get the MCH3602, and why it works with ILE programs
(which 
understand how to work with teraspace) but doesn't work with OPM programs 
(which don't understand teraspace).

I don't see why a V5R2 -> V5R4 upgrade would cause this problem, unless 
you replaced the "first program" (the one that removes the null and pads 
with blanks) when you upgraded it.

The only other possibility that comes to mind is that one of the programs 
(possibly the one removing the null and adding spaces) is overwriting 
memory that doesn't belong to it.  It's possible that in V5R2, you got 
"lucky" and overwrote memory that wasn't in use, but that a change in
V5R4 
caused the layout in memory to change so that you're now overwriting part 
of a pointer variable.


Mike Naughton
Senior Programmer/Analyst
Judd Wire, Inc.
124 Turnpike Road
Turners Falls, MA  01376
413-863-4357 x444
mnaughton@xxxxxxxxxxxx


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.