Bonjour a tous,
Je travaille sous Linux et lorsque j'execute mon code il est ecrit
"Subscript 51 is out of range for dimension 1 for array RNGCAZ with bounds 1:50; file : prog.for line 41"

voila mon programme :

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
60
61
62
63
64
65
66
IMPLICIT NONE
 
 
	INCLUDE 'Param'
 
C
      INTEGER NRNG,NAZ    
C      REAL    PCR(0:4000)
      REAL, DIMENSION ( : , : ), ALLOCATABLE :: PCRMOY
      REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCAZ
      REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCUM
      REAL, DIMENSION ( : ), ALLOCATABLE :: PCR
 
c      REAL    RNGCUM(0:4000),PCRMOY(0:4000,50)
C      REAL    RNGCAZ(50)
      INTEGER IRNG,IAZ               
      REAL    RNG,X1,X2,Y1,Y2,DIST,PCUM        
      INTEGER MPB_PDC
 
C
      ENTRY CUMPRX(NAZ,NRNG,PCUM,MPB_PDC)
 
       allocate(PCRMOY(0:4000,50))   
	allocate(PCR(0:4000))
	allocate(RNGCUM(0:4000))
	allocate(RNGCAZ(50))	
 
      DO 20, IAZ = 1,NAZ           
       IF (PCUM.LE.PCRMOY(1,IAZ)) THEN 
        IF (IAZ.EQ.NAZ)
 
     +   PRINT*,' DISTANCES CALCULEES TROP PETITES (PDCUM =',PCUM,')'
 
        RNGCAZ(IAZ) = RNGCUM(1)   : l'erreur se produit sur cette ligne
       ELSE
        IF (MPB_PDC.EQ.0) THEN
          IF (PCUM.GE.PCRMOY(NRNG,IAZ)) THEN 
            IF (IAZ.EQ.NAZ)
 
     +   PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
            RNGCAZ(IAZ) = -1.
          ELSE         
            DO 10, IRNG = 0,NRNG
              IF ( (PCUM.GT.PCRMOY(IRNG,IAZ)).AND.
     +         (PCUM.LT.PCRMOY(IRNG+1,IAZ)) ) THEN 
                X1 = RNGCUM(IRNG)
                X2 = RNGCUM(IRNG+1)
                Y1 = PCRMOY(IRNG,IAZ)   
                Y2 = PCRMOY(IRNG+1,IAZ)         
                RNGCAZ(IAZ) = (X2-X1)/(Y2-Y1)*(PCUM-Y1)+X1     
              END IF    
10          CONTINUE    
          END IF 
        ELSE 
          DO 15, IRNG = 0,NRNG
            IF (PCUM.LE.PCRMOY(IRNG,IAZ)) THEN
              RNGCAZ(IAZ) = RNGCUM(IRNG)
              GO TO 16
            ELSE IF (IRNG.EQ.NRNG) THEN
              IF (IAZ.EQ.NAZ)
 
     +	PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
              RNGCAZ(IAZ) = -1.
            END IF    
15        CONTINUE
...
Pouvez vous me m'aider s'il vous plaît. j'ai cru qu en passant les tableaux dynamiquement cela résoudrait mon probleme mais sa ne change rien.merci beaucoup pour l'aide que vous pourrez m apporter.