Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    27

    fortran 90

    ciao a tutti!
    sto provando a programmare in fortran 90, ed ho un problemino:
    devo leggere da file dei dati, rielaborarli e scrivere su nuovo file i dati ottenuti.
    Il mio problema sta nel file da cui prelevare i dati: in fase di lettura file, IOSTAT ritorna sempre un errore (-1 o 22).
    Ho pensato che di aver strutturato male il file, ma qualunque struttura dia ai dati, ho sempre errore. Ho provato a fare un semplice ciclo di 10, ma continuo ad avere errore.
    Non riesco a capire cosa stia sbagliando.
    Qualcuno può aiutarmi?

    Il testo dice questo:

    Su due files diversi sono state registrate tutte le misure relative a B.
    Ciascuna misura è contenuta in un 'record' singolo e consiste nei seguenti dati:
    - valore di B (crescente da 0 a 8 con passo 0.5)
    - valori C,D,E,F
    NB:Per ogni valore di B sono state effettuate 100 misure
    NB:Tutte le misure a B=0 precedono su files tutte le misure a B=0.5, etc per gli altri valori crescenti.

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    27
    Questo è una parte di codice che ho scritto, ma il file sembra continuarmi a dare problemi: READ(U(K)...,IOSTAT=IOS) mi segnala ios=-1 prima, ios=22 poi, ma non capisco. Cosa sbaglio? GRAZIEMILLE!!

    codice:
    PROGRAM CONVERT
    IMPLICIT NONE
    
    LOGICAL F(2)
    INTEGER U(2),K,I,J,IOS
    REAL SOM,CALC,EFFMED(17),DEVST(17),DIFPERC(17),B(17),
    +Vin(100),Iin(100),Vload(100),Iload(100),EFFIC(100 )
    CHARACTER*13 CONFIG(2),FILENEW*12
    DATA CONFIG/'ortogonal.dat','parallela.dat'/,
    +FILENEW/'tabella.dat'/
    
    OPEN (13,FILE=FILENEW,STATUS='NEW',ERR=1002)
    WRITE (13,201,ERR=1004)
    
    K=0
    DO 50,K=1,2
    INQUIRE (FILE=CONFIG(K),EXIST=F(K))
    IF (F(1).OR.F(2)) THEN
    U(1)=11
    U(2)=12
    END IF
    OPEN (U(K),FILE=CONFIG(K),ACCESS='SEQUENTIAL',
    + FORM='UNFORMATTED',STATUS='OLD',ERR=1001)
    
    SOM=0.0
    CALC=0.0
    DO 51,I=1,17
    DO 52,J=1,100
    READ (U(K),ERR=1003,IOSTAT=IOS) B(I),Vin(J),
    + Iin(J),Vload(J),Iload(J)
    
    calcoli vari
    
    52 CONTINUE
    
    WRITE (13,202,ERR=1004) CONFIG(K),B(I)
    
    51 CONTINUE
    
    CLOSE (U(K))
    F(K)=.FALSE.
    
    50 CONTINUE
    
    STOP
    altro
    END

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    27
    ciao a tutti,
    scusate se ho inserito parte del codice, ma non usando molto il forum non sono molto afferrata su come va gestito!
    Spero che quanto scritto possa essere, almeno, di aiuto a qualcuno!

    Dopo vari tentativi ho capito l'errore che stavo facendo! Non corrispondeva il codice scritto con il file che avevo creato.

    L'errore stava proprio nel fatto che, con un file strutturato come nell'esempio sottostante, in cui ciascuna misura è contenuta in un record singolo, non era necessario dichiare le variabili B,Vin,Iin,Vload,Iload come vettori, con array (B(17) e le altre di 100 elementi).

    NB:Tutte le variabili vanno dichiarate senza array per un file strutturato in questo modo!

    Esempio:
    B=0.0 Vin Iin Vload Iload
    B=0.0 Vin Iin Vload Iload
    B=0.0 Vin Iin Vload Iload
    B=0.0 Vin Iin Vload Iload
    .
    .
    per 100 record
    B=0.5 Vin Iin Vload Iload
    B=0.5 Vin Iin Vload Iload
    B=0.5 Vin Iin Vload Iload
    B=0.5 Vin Iin Vload Iload
    .
    .
    per 100 record
    .
    .
    fino ad un totale di 1700 record!

    Ciao a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.