[ ZastoZasto @ 23.05.2005. 14:01 ] @
Imam ogroman problem-fortran program. Pozivajuci subroutine, program menja sve parametre u neke slucajne brojeve, cak i one koji se ne pozivaju u toj subroutine. Npr. jedan parametar je KENN=1 pre neke subroutine, taj parametar se ni ne pozove u njoj, a cim izvrsi subroutine KENN=1134624768 (znaci neki bilionski slucajan broj). To se ne desava samo sa ovim parametrom, vec i sa mnogim drugim. Jel zna neko u cemu bi mogao da bude problem?
[ Mihajlo Cvetanović @ 23.05.2005. 15:05 ] @
Verovatno imas neki niz u toj subrutini, i pises preko granica niza.
[ ZastoZasto @ 23.05.2005. 15:19 ] @
Pa ne bi trebalo. U ovom delu se javlja greska:
........
DO 80 L=1,mst
RLPRO(L)=(REAL(PROF(1)-PROF(L)))*1000.
RLQUK(L)=real(Q(L))
RLH(L)=REAL(H(L))
RLDX(L)=REAL(DELX(L))
RLQL(L)=REAL(QL(L))
IF(L.EQ.1)RLQL(L)=REAL(Q(L))
write(*,*)L,mst,n
80 continue
..........
Znaci u tom delu on samo pamti brojeve koje je tacno izracunao, kad odstampam L, mst i n vidim da se menja mst(=250) posle L=138 postaje taj cudan veliki broj, a n(=1) postaje taj broj posle 159 i tako dalje. Inace mst i n su parametri, definisani:
....
parameter mst=250
parameter n=1
.....
Zato i ne kapiram sta je problem. A sve promenljive u loop-u su definisane kao nizovi, veci nego sto je definisano u subroutine, npr.
....
dimension rlpro(3000)
.....
[ Mihajlo Cvetanović @ 24.05.2005. 08:49 ] @
Sta su PROF, Q, H, DELX, QL, nizovi ili funkcije? Ovaj kod, je li to ta

subrutina? Kazes da su nizovi u petlji veci nego nizovi u subrutini, ne

razumem. Mozda koristis COMMON na pogresan nacin?
[ ZastoZasto @ 24.05.2005. 14:41 ] @
To su sve nizovi.
Da to je ta subroutine koja menja parametre.
Nizovi su definisani u glavnom programu u zavisnosti od nekog max. broja, npr. Q(3000), znaci max broj u nizu je 3000. U subroutine je taj broj manji, jer je definisano za tacan broj podataka npr. podataka ima 500, znaci definisano u subroutine je: Q(500).
Sad sam valjda objasnila. Ne verujem da je to problem, jer sam probala da definisem na isti broj i dalje javlja isti problem.....
[ ZastoZasto @ 24.05.2005. 14:45 ] @
To su sve nizovi.
Da to je ta subroutine koja menja parametre.
Nizovi su definisani u glavnom programu u zavisnosti od nekog max. broja, npr. Q(3000), znaci max broj u nizu je 3000. U subroutine je taj broj manji, jer je definisano za tacan broj podataka npr. podataka ima 500, znaci definisano u subroutine je: Q(500).
Sad sam valjda objasnila. Ne verujem da je to problem, jer sam probala da definisem na isti broj i dalje javlja isti problem.....
[ Mihajlo Cvetanović @ 25.05.2005. 09:18 ] @
Da li su bas svi nizovi (RLPRO, RLQUK, RLH, RLDX, RLQL) dimenzionisani

na 3000 elemenata? Da nisi mozda deklarisala neki od tih nizova u samoj

subrutini? Da bi pronasla problem probaj da pregledas cak i sadrzaj svih

nizova (ili bar prve elemente u svakom nizu), a ne samo pojedinacne

promenljive. Da li mozes da debagujes kod korak po korak, i vidis

sadrzaj memorije u svakom koraku?


Mora da je pisanje preko granica niza, nema sta drugo da bude...