Проблема создания простой функции меню на Фортране 95 с использованием модуля - PullRequest
1 голос
/ 05 апреля 2011

Я только начинаю создавать функцию меню в модуле, и я получаю фатальную ошибку, слишком много ошибок. Я подозреваю, что это, вероятно, связано с одной маленькой ошибкой, а не с множественной, поскольку код на данный момент так прост.

У кого-нибудь есть идеи?

Ниже то, что я имею до сих пор. Очевидно, я только начал, но уже удивляюсь, почему возникает проблема. Большое спасибо!

Также я немного новичок в модулях, поэтому мне просто интересно, можете ли вы сказать, как это скомпилировать? g95 themenu.f95 -o ba ??

Спасибо.

 MODULE themenu
    IMPLICIT NONE

    INTEGER:: choices, opt
    opt=choices()

     CONTAINS

    INTEGER FUNCTION choices ()
    INTEGER:: opt

    DO
        PRINT*, "1: Add an item manually"
        PRINT*, "2: Add item(s) from a file"
        PRINT*, "3: Add random item from list of top ten list"
        PRINT*, "4: Print list with totals"
        PRINT*, "5: Sort list alphabetically"
        PRINT*, "6: Sort list by price"
        PRINT*, "7: Write list to file"
        PRINT*, "8: EXIT"
        PRINT*, " "
        PRINT*, "Please make your selection (enter a number): "
        READ*, opt
        IF (opt>=1 .AND. opt<=8)EXIT
        PRINT*, "INVALID CHOICE. MUST BE A NUMBER 1-8. PLEASE TRY AGAIN!"
    END DO
    choices=opt
    END FUNCTION
    END MODULE

Спасибо! Программа, использующая этот модуль, выглядит примерно так:

PROGRAM listman
USE themenu
IMPLICIT NONE
END PROGRAM

1 Ответ

5 голосов
/ 05 апреля 2011

Вы не можете иметь операторы присваивания в модуле, только спецификации типов данных и раздел CONTAINS с процедурами.

MODULE themenu
CONTAINS
    INTEGER FUNCTION choices ()
    IMPLICIT NONE
    INTEGER:: opt
    ....
    END FUNCTION
END MODULE

PROGRAM listman
USE themenu
IMPLICIT NONE
INTEGER :: opt
opt=choices()
END PROGRAM
...