私は複数のオプション(検索レコード、レコードの追加、レコードの削除、レコードの変更)を持つメニューを持つプログラムを持っています。私がしようとしているのは、自動入力機能のようなものです。FortranでREAD文の変数を事前に入力する方法は?
例:レコード番号は検索オプションに入力されますが、データベースを検索した後、そのレコードは見つかりません。別のレコード番号を検索するか、入力した変数で新しいレコードを追加するかどうかのオプションが表示されます。追加することを選択した場合は、プログラムがサブルーチンを呼び出すようにし、読み込んだステートメントを検索サブルーチンに読み込んだレコードで自動入力します。
これは私のコードのようです(検索サブルーチンは検索機能を使用してmaster.dbのレコード番号を検索し、表示サブルーチンはフォーマットされた配列の画面に結果を表示します)定義されたレコード内の文字と整数の変数)を持つマスタモジュール:追加サブルーチンで
SUBROUTINE search
IMPLICIT NONE
CHARACTER::readRecord*10, changeOpt*1
INTEGER::recNum, search
OPEN(20, FILE="master.db", FORM="FORMATTED", ACCESS="DIRECT", RECL=100)
DO
CALL SYSTEM ("clear")
WRITE(*,"(2/,20X,A25)")"* * * Search Record * * *"
WRITE(*,100,ADVANCE="NO")"Please enter a record number or Q to exit:"
100 FORMAT(1/,20X,A42,1X)
READ(*,200)readRecord
200 FORMAT(A10)
IF(readSSN=="Q" .OR. readSSN=="q")RETURN
recNum=search(readRecord)
IF (recNum==0)THEN
CALL SYSTEM("clear")
WRITE(*,"(2/,20X,A26)")"* * * Display Record * * *"
WRITE(*,300,ADVANCE="NO")"Record ", readRecord," not found. ","Would you like to add a new record (Y/N)?"
300 FORMAT(1/,20X,A7,A10,A12,1/,20X,A41,1X)
READ*,changeOpt
IF(changeOpt=="Y" .OR. changeOpt=="y") CALL add
CYCLE
ELSE
CALL display
WRITE(*,400,ADVANCE="NO")"Press ENTER to continue:"
400 FORMAT(1/,20X,A24,1X)
READ*,
END IF
END DO
CLOSE(20)
END SUBROUTINE search
、すべてのものまで
recNum=search(readRecord)
には、検索サブルーチンと同じです。私が欲しいのは、それを何とか一時的に、検索サブルーチンで
READ(*,200)readRecord
に入力した情報を取る保存する方法で、追加のサブルーチンが呼び出された後、その後、自動的に
READ(*,200)readRecord
にそれを入力してください追加サブルーチンでは、ユーザーが追加したいレコード番号を再入力する必要がありません。私はこれが達成されるかもしれないと思うが、私は次のようになりの構文を知らない
方法:
! WRITE readRecord to some specific place in master.mod
! CALL add
! Once in add:
! At READ(*,200)readRecord, search police.mod to check if it
! has a readRecord already written in it.
! If it does, autofill READ(*,200)readRecord with the readRecord
! from police.mod.
! Then delete readRecord from police.mod (so that if you go directly
! into the add subroutine later, it doesn't autofill a record from a
! previous search).
! If there is no readRecord in police.mod then just prompt for user
! to enter readRecord like in the search subroutine.
任意の提案をいただければ幸いです。
オートフィルを検索すると、通常はロジックに応じて自動的に記入されるため、* autofill *から* pre-fill *に変更することをお勧めします。たとえば、Tabキーを押すと、ディレクトリ内の既存のファイル名に従って入力されたファイル名の一部が自動入力されます。 –
ほんの数コメント。1)あなたは本当にあなたの質問を説明するためのより簡単な例を開発するために働くべきです。 (実際にはデータベースとは関係がありますか?正確には正しいですか?)2)あなたは明らかに特定の端末環境(linux/xterm?)に自分自身をロックしています。それが何であれ、それを質問に入れるべきです。 – agentp