Bonjour,

voilà exécutant un rexx, j'ai le message suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14

IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
IRX0662E EXECIO error. Unable to obtain storage.                          
LIGNE EN DOUBLON : PROBCF.ARCF.F0509221                            221344 
ESPACE = 442688                                                           
    15 +++    CALL DOUB                                                   
IRX0005I Error running DCOLL03N, line 56: Machine storage exhausted
Voici mon rexx :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

/*REXX*/                                                    
/*TRACE I */                                                
"EXECIO * DISKR DCOLIN (FINIS STEM DS."                     
  DO I = 1 TO DS.0                                          
      DSNAM.I = SUBSTR(DS.I,1,44)                           
      SPACE.I = SUBSTR(DS.I,46,9)                           
      CREAT.I = SUBSTR(DS.I,54,8)                           
      VOLUM.I = SUBSTR(DS.I,63,6)                           
      J = I + 1                                             
      DSNAM.J = SUBSTR(DS.J,1,44)                           
      SPACE.J = SUBSTR(DS.J,46,9)                           
      IF DSNAM.I = DSNAM.J THEN                             
      DO                                                    
         SPACETOT = 0                                       
         CALL DOUB                                          
      END                                                   
      ELSE                                                  
      DO                                                    
        SPACETOT = SPACE.I                                          
      END                                                           
      SPACETOT = SPACETOT % 55 /* CONVERSION EN TRACKS */           
      LSPACE = LENGTH(SPACETOT)                                     
      IF LSPACE < 7 THEN                                            
      DO                                                            
         LCORIG = 7 - LSPACE                                        
         SPACETOT = INSERT(" ",SPACETOT,,LCORIG)                    
      END                                                           
/*      QUEUE DSNAM.I!!' 'SPACETOT!!' 'CREAT.I!!' 'VOLUM.I     */   
      DS.1  = DSNAM.I!!' 'SPACETOT!!' 'C                            
     "EXECIO 1 DISKW DCOLOUT (STEM DS."   /* ECRITURE 1 LIGNE  */   
  END                                                               
"EXECIO 0 DISKR DCOLIN  (FINIS" /* CLOSE FICHIERS */                
"EXECIO 0 DISKW DCOLOUT (FINIS" /* -------------- */                
/*   QUEUE ""                                                       
    "EXECIO * DISKW DCOLOUT (FINIS"   */                            
  EXIT;                                                             
DOUB:                                                               
IF SPACETOT = 0 THEN                                   
DO                                                     
   SPACETOT = SPACETOT + SPACE.J + SPACE.I             
   SAY 'LIGNE EN DOUBLON : 'DS.I                       
END                                                    
ELSE                                                   
DO                                                     
   SPACETOT = SPACETOT + SPACE.J                       
END                                                    
I = I + 1                                              
DSNAM.I = SUBSTR(DS.I,1,44)                            
SPACE.I = SUBSTR(DS.I,46,9)                            
CREAT.I = SUBSTR(DS.I,54,8)                            
VOLUM.I = SUBSTR(DS.I,63,6)                            
J = I + 1                                              
DSNAM.J = SUBSTR(DS.J,1,44)                            
SPACE.J = SUBSTR(DS.J,46,9)                            
SAY 'ESPACE = 'SPACETOT                                
IF DSNAM.J = DSNAM.I THEN CALL DOUB                    
RETURN
Savez-vous comment faire pour éviter cet overflow ?