구조체를 이용한 컴퓨터 사용 기록 검색

PROGRAM Usage

IMPLICIT NONE

TYPE Computer_Usage_Info
CHARACTER(15) :: LastName, FirstName
INTEGER :: IdNumber
CHARACTER(6) :: Password
INTEGER :: ResourceLimit
REAL :: ResourceUsed
END TYPE Computer_Usage_Info

CHARACTER(20) :: FileName
TYPE(Computer_Usage_Info) :: User
INTEGER :: OpenStatus, InputStatus, InputNumber, UserNumber
LOGICAL :: Found

WRITE (*, '(1X, A)', ADVANCE = "NO") "Enter name of computer-usage file : "
READ *, FileName

OPEN (UNIT = 10, FILE = FileName, STATUS = "OLD", IOSTAT = OpenStatus)

IF (OpenStatus > 0) THEN
STOP "*** Cannot open file ***"
END IF

DO
PRINT *
WRITE (*, '(1X, A)', ADVANCE = "NO") "Enter id number (0 to stop) : "
READ *, InputNumber

IF (InputNumber == 0) THEN
EXIT
END IF

DO
READ (10, '(T31, I5)', IOSTAT = InputStatus) UserNumber

IF (InputStatus > 0) STOP "*** Input error ***"
IF (InputStatus < 0) EXIT ! end of file

Found = (InputNumber == UserNumber)

IF (Found) EXIT ! record found
END DO

IF (Found) THEN
BACKSPACE 10 ! UNIT 10 is moved backward
READ (10, '(2A15, 11X, I4, F5.2)') User%LastName, User%FirstName, User%ResourceLimit, User%ResourceUsed

PRINT '(1X, I5, 1X, 2A / 1X, F5.1, "% of resources remains.")', &
UserNumber, User%FirstName, User%LastName, &
100.0 * (User%ResourceLimit - User%ResourceUsed) / User%ResourceLimit
ELSE
PRINT *, InputNumber, " not found"
END IF

REWIND 10 ! go back to first
END DO

END PROGRAM Usage

위 소스를 09_02_Usage.f95

자료

Babbage Charles 10101ADA 75038081
Newton Isaac 10102APPLE 65059884
Leibniz Gottfried 10103CALC 25019374
Fahrenheit Freda 10104FRZ32 25017793
Celsius Christine 10105FRZ0 85019191
Tower Lean 10106PISA 35022395
VanderVan Henry 10107VAN 75016859
Freeloader Freddie 10108RED 450 7661
Alexander Alvin 10109GREAT 65040504
Mouse Michael 10110EARS 50 4257
Lukasewicz Zzzyk 10111RPN 350 7350
Christmas Mary 10112NOEL 850 3328
Sinke CJ 10113TRAIN 75032753
Nijhoff Laran 10114KKID 55038203
Liestma Stan 10115SAAB 550 2882
Zwier Apollos 10116PJ 95025618
Jaeger Tim 10117BIKE 45033701
VanZwalenberg JORGE 10118EGYPT 35024948
Jester Courtney 10119JOKER 45028116
McDonald Ronald 10120FRIES 250 3500
Nederlander Benaut 10121DUTCH 650 3836
Haybailer Homer 10122FARM 850 3732
Spear William 10123SHAKE 25024673
Romeo Juliet 10124XOXOX 15010019
Greek Jimmy 10125WAGER 250 3
Virus Vera 10126WORM 750 6735
Beech ROcky 10127BOAT 55039200
ENGEL Angel 10128WINGS 150 1639
Abner Lil 10129DAISY 950 8957
Tracy Dick 10130CRIME 85046695
McGee Fibber 10131MOLLY 75033212
Bell Alexander 10132PHONE 85033743
Cobb Tyrus 20101TIGER 50 3281
George Ruth 20102BABE 25010934
Descartes Ronald 20103HORSE 35026993
Euclid Ian 20104GREEK 95018393
Daniels Ezekiel 20105LIONS 35012869
Tarzan Jane 20106APES 15010031
Habbakuk Jonah 20107WHALE 350 6363
Colombus Chris 20108PINTA 85020224
Byrd Richard 20109NORTH 55016849
Bunyan Paul 20110BABE 55033347
Chaucer Jeff 20111POEM 950 3702
Stotle Ari 20112LOGIC 75033774
Harrison Ben 20113PRES 55026297
James Jesse 20114GUNS 250 5881
Scott Francine 20115FLAG 35016811
Phillips Phyllis 20116GAS66 65032222
Doll Barbara 20117KEN 350 2634
Finn Huck 20118TOM 350 2286
Sawyer Tom 20119HUCK 95046030
Newmann Alfred 20120MAD 45011600
Simon Simple 20121SAYS 55048605
Schmidt Messer 20122PLANE 250 3531
Luther Calvin 20124REF 77766666
Yale Harvard 20125IVY 15012770

위 자료를 users.dat로 저장

소스 컴파일 및 프로그램 테스트



'Programming > Fortran' 카테고리의 다른 글

컴퓨터에 따른 실수의 정밀도(precision)와 범위(range)  (0) 2008.10.31
Pointer and Linked List  (0) 2008.10.01
저장값의 범위  (0) 2008.09.29
다차원배열  (0) 2008.09.25
빈도구하기  (0) 2008.09.25

+ Recent posts