여러 옵션 (검색 기록, 기록 추가, 기록 삭제, 기록 수정)이있는 메뉴가있는 프로그램이 있습니다. 내가하려는 것은 자동 채우기 기능입니다.Fortran에서 READ 문 변수를 미리 채우는 방법은 무엇입니까?
예 : 레코드 번호가 검색 옵션에 입력되었지만 데이터베이스를 검색 한 후에 해당 레코드를 찾을 수 없습니다. 그런 다음 다른 레코드 번호를 검색하거나 방금 입력 한 변수로 새 레코드를 추가하는 옵션이 프롬프트됩니다. 추가를 선택하면 프로그램이 add 서브 루틴을 호출하고 이미 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
에 입력 add 서브 루틴에서 사용자가 추가하려는 레코드 x 호를 다시 입력하지 않아도됩니다.
하는 방법입니다
나는이 달성 될 수 있다고 생각하지만 것 내가 구문을 모르는 :! 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.
어떤 제안을 크게 감상 할 수있다.
자동 채우기를 검색 할 때 대개 일부 논리에 따라 자동으로 채우기를 의미하므로 * 자동 채우기 *를 * 사전 채우기 *로 변경하는 것이 좋습니다. 예를 들어 Tab 키를 누르면 디렉토리의 기존 파일 이름에 따라 입력 된 파일 이름의 일부가 자동 채워집니다. –
몇 가지 의견.1) 질문을 설명하기 위해 좀 더 간단한 예제를 개발해야합니다. (실제로 데이터베이스와 관련이 있습니까? 정확하게는/틀린 것입니까?) 2) 분명히 특정 터미널 환경 (linux/xterm?)에 자신을 잠근 것입니다. 그것이 무엇이든 당신은 질문에 넣어야합니다. – agentp