insomniaK Δημοσ. 3 Αυγούστου 2006 Δημοσ. 3 Αυγούστου 2006 Χαίρεται, Μου έδωσαν ένα πρόγραμμα, γραμμένο το 1995 σε Fortran 77 κυρίως και με κάποια κομμάτια C. Μετά από 1 εβδομάδα κατάφερα να εξαφανίσω τα προβλήματα στο compiling, εκτός από 1 στην ακόλουθη structure: > STRUCTURE /RAWDATA/ C C List of parameters used during analysis. C A new parameter has to be added to the C main table for the rawdata (e.g.: "EKOFISK.HDR", or "CFG.HDR") C and to following SUBROUTINES as well: C C READHDR C WRTHDR C CHARACTER*70 VERSN CHARACTER*70 OWNER CHARACTER*70 USER CHARACTER*70 SHIP CHARACTER*70 TOWER CHARACTER*3 IDENT CHARACTER YY*2 CHARACTER YYYY*4 CHARACTER MM*2 CHARACTER DD*2 CHARACTER HH*2 CHARACTER MI*2 CHARACTER LAT*10 CHARACTER LONG*10 INTEGER IXY C (D3SHDR) INTEGER NX wird aus Y-LEN in READHDR gebildet fuer IXY=1. C (D3SHDR) INTEGER NY wird aus X-LEN in READHDR gebildet fuer IXY=1. INTEGER IXSTR INTEGER IYSTR INTEGER NT INTEGER NMEAN REAL HEADG REAL SHIPR REAL SHIPS REAL HDG C ROTMA wird innerhalb FFT3DC besetzt !!! REAL ROTMA REAL RBOX REAL PBOX REAL WINDR REAL WINDS REAL DEPTH REAL RPT REAL PRF REAL SDT REAL SFREQ END STRUCTURE Για την οποία ο compiler της Compaq Fortran μου πετάει το ακόλουθο λάθος: RAWDATA.FOR(47) : Error: Syntax error, found END-OF-FILE when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM TYPE COMPLEX BYTE CHARACTER ... END STRUCTURE Αν και διαβάζω το λάθος που μου βγάζει δεν καταλαβαίνω που είναι το πρόβλημα. Θα μπορούσε κάποιος να βοηθήσει, πριν τρελαθώ;
gerontas Δημοσ. 4 Αυγούστου 2006 Δημοσ. 4 Αυγούστου 2006 Δεν εχω εγκατεστημένο FORTRAN compiler να το δοκιμάσω (κι ελπίζω να μη χρειαστεί να εγκαταστήσω ποτέ ξανά ), αλλά, αν αυτή την κενή γραμμή 47 την κάνεις σχόλιο ή την διαγράψεις τελείως, κάνει το ίδιο;
insomniaK Δημοσ. 4 Αυγούστου 2006 Μέλος Δημοσ. 4 Αυγούστου 2006 Ευχαριστώ για την απάντηση. Η σύνταξη της structure είναι >STRUCTURE [/structure-name/] [field-namelist] field-declaration [field-declaration] . . . [field-declaration] END STRUCTURE Και αυτό που μου βγάζει ως error είναι το END STRUCTURE και όχι την κενή γραμμή. Αν τώρα διαγράψω την END, βγάζει όλο το πρόγραμμα λάθος, διότι όλες οι μεταβλητές δεν αντιστοιχίζονται στον Header των δεδομένων για την εισαγωγή τους... Όλες οι ιδέες ευπρόσδεκτες!
gerontas Δημοσ. 4 Αυγούστου 2006 Δημοσ. 4 Αυγούστου 2006 Αν καταλαβαίνω σωστά την απάντησή σου, εννοείς ότι αυτή η κενή γραμμή, που φαίνεται στον κώδικα που παρέθεσες, > REAL SFREQ END STRUCTURE στην πραγματικότητα, δεν υπάρχει. Ρίχνοντας ακριβώς αυτό το κείμενο σ' έναν DOS-editor, είδα ότι ο κώδικας δεν ακολουθεί φυσικό, αλλά tabbed spacing και είναι πολύ πιθανό αυτός ο ειδικός χαρακτηρας μεταξύ SFREQ και END, εδώ μεν να μεταφράζεται σαν κενή γραμμή, αλλα η FORTRAN να τον βλέπει σαν αυτό, που κάποτε "τρυπούσαμε" 6-7-8-9 για να ορίσουμε το EOF. Πάλι αν κατανοώ σωστά το μήνυμα λάθους (αν και στην F., πολλές φορές, τα μηνύματα χτυπάνε πολύ μακριά από την καρδιά του προβλήματος) αυτό που λέει είναι >[b]found [/b]END-OF-FILE [color="blue"][b]when expecting [/b]one of: μπλα-μπλα-μπλα [b] ή END STRUCTURE[/b][/color] Το πρώτο που θα δοκίμαζα, είναι να περάσω το κείμενο από έναν προχωρημένο editor και να κάνω expand tabs to spaces. Στη συνέχεια, θα κολλούσα την END STRUCTURE με την από πάνω γραμμή ώστε να βεβαιωθώ ότι δεν "ξέμεινε" κάποιος special char ανάμεσα και θα την ξανακατέβαζα στη θέση της. Πολύ απλοϊκό και (πολύ καλό για νάναι αληθινό) αλλά ίσως πιάσει. Αν όχι, το πιθανότερο είναι ότι κάποια δομή xxx...END xxx (από IF... END IF μέχρι DO nn, οπου το nn λείπει) έχει τρελλάνει τον stack pointer. Hope it helps.
insomniaK Δημοσ. 4 Αυγούστου 2006 Μέλος Δημοσ. 4 Αυγούστου 2006 gerontas, έτσι ακριβώς όπως το περιγράφεις είναι το πρόβλημα. Από το πρωί δοκιμάζω διάφορα και αυτό που προτείνεις παραπάνω (τα μεγάλα πνεύματα συναντιόνται), αλλά το πρόβλημα παραμένει. Το έβαλα στον UltraEdit και αντικατέστησα (και αυτόματα και χειροκίνητα) τα πάντα και πάλι το ίδιο πρόβλημα. Μέσα στις δοκιμές, χρησιμοποίησα και ένα δεύτερο προγράμμα που χρειάζεται την ίδια Structure και εκεί κολλάει ακριβώς με το ίδιο πρόβλημα. Επομένως, απέκλεισα και οτίδήποτε ξεχασμένο. Δεν ξέρω τι άλλο να ελένξω. Το μόνο που υποπτεύομαι πια, είναι ότι το αρχικό πρόγραμμα είναι σε Watcom 77 και τώρα χρησιμοποιώ Compaq 95 και ίσως υπάρχει κάποια μπούρδα από την αρχική έκδοση, που δεν μπορώ να βρω. Ευχαριστώ πάντως και αν σου έρθει κάτι, let me know it.´ EDIT: Βασικά και μόνο την Structure να κανεις compile, πάλι βγάζει το ίδιο λάθος...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.