home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.update.uu.se
/
ftp.update.uu.se.2014.03.zip
/
ftp.update.uu.se
/
pub
/
rainbow
/
msdos
/
decus
/
RB113
/
address.for
< prev
next >
Wrap
Text File
|
1995-05-28
|
8KB
|
309 lines
C
C ADDRESS / PHONE NO. LIST by Bruce W. Roeckel
C *--------------------------*
C
C
$STORAGE:2
C
C
COMMON/MAIN1/ LAST,FIRST,ADD1,ADD2,CITY,STATE,ZIP,PH1,PH2
CHARACTER LAST(12,200)*1,FIRST(200)*23,ADD1(200)*30,ADD2(200)*30
CHARACTER CITY(200)*23,STATE(200)*2,ZIP(200)*5
CHARACTER PH1(200)*14,PH2(200)*14
C
COMMON/MAIN2/ STRID,SORT,MNUM
INTEGER*4 STRID(200),SORT(200),MNUM
C
COMMON /REVNO/ PGM,AUTHOR,YEAR,DATE,REV
CHARACTER PGM*21,AUTHOR*21,YEAR*4,DATE*8,REV*2
C
COMMON/LETT/ALPHA,ALPH2
CHARACTER*1 ALPHA(26),ALPH2(26)
C
CHARACTER OPTION*25,KEY*1,SEL*1
LOGICAL*2 CHECK
C
C SET UP COMMON BLOCK OF ALPHABET
C
ALPHA(1)='A'
ALPHA(2)='B'
ALPHA(3)='C'
ALPHA(4)='D'
ALPHA(5)='E'
ALPHA(6)='F'
ALPHA(7)='G'
ALPHA(8)='H'
ALPHA(9)='I'
ALPHA(10)='J'
ALPHA(11)='K'
ALPHA(12)='L'
ALPHA(13)='M'
ALPHA(14)='N'
ALPHA(15)='O'
ALPHA(16)='P'
ALPHA(17)='Q'
ALPHA(18)='R'
ALPHA(19)='S'
ALPHA(20)='T'
ALPHA(21)='U'
ALPHA(22)='V'
ALPHA(23)='W'
ALPHA(24)='X'
ALPHA(25)='Y'
ALPHA(26)='Z'
ALPH2(1)='a'
ALPH2(2)='b'
ALPH2(3)='c'
ALPH2(4)='d'
ALPH2(5)='e'
ALPH2(6)='f'
ALPH2(7)='g'
ALPH2(8)='h'
ALPH2(9)='i'
ALPH2(10)='j'
ALPH2(11)='k'
ALPH2(12)='l'
ALPH2(13)='m'
ALPH2(14)='n'
ALPH2(15)='o'
ALPH2(16)='p'
ALPH2(17)='q'
ALPH2(18)='r'
ALPH2(19)='s'
ALPH2(20)='t'
ALPH2(21)='u'
ALPH2(22)='v'
ALPH2(23)='w'
ALPH2(24)='x'
ALPH2(25)='y'
ALPH2(26)='z'
C
C DISPLAY ROCKSOFT HEADER
C
PGM='Address Book '
AUTHOR='Bruce W. Roeckel '
YEAR='1986'
REV='07'
CALL MHEAD(PGM,AUTHOR,YEAR,REV,DATE)
CALL TOP(PGM,DATE)
C
C READ THE DATABASE INTO CORE
C
CALL RDMAST
CALL SORTIT
C
C CHECK FOR HELP DOCUMENT FILE
C
IHLP=0
INQUIRE(FILE='ADDRESS.HLP',EXIST=CHECK)
IF(CHECK .EQV. .TRUE.) THEN
IHLP=1
OPEN(15,FILE='ADDRESS.HLP')
ENDIF
C
C NOW DISPLAY MAIN MENU
C
100 CONTINUE
OPTION='Main Menu'
CALL HEADER(OPTION)
WRITE(*,150)
150 FORMAT(/,3X,'Total Entries in',
A /,3X,'Master File: ',\)
CALL BOLD
WRITE(*,'(I3)') MNUM
CALL OFF
WRITE(*,200)
200 FORMAT(/,
A //,20X,' 1. Add / Delete / Edit Master File Entries ',
B /,20X,' 2. Browse Entire Master File ',
C /,20X,' 3. Print Master Address & Phone No. List ',
D /,20X,' 4. Print Wallet Size Address Booklet ',
E /,20X,' 5. Print Phone Number Only Summary ')
C
C ASK FOR SELECTION, THEN BRANCH BASED ON INPUT
C
300 CONTINUE
IV=21
IH=1
CALL MOVEIT(IH,IV)
WRITE(*,'(/,5X,A37,\)') 'Enter Menu Choice (H=Help, Q=Quit) : '
READ(*,'(A1)',ERR=100) SEL
CALL OFF
IF (SEL.EQ.' ') THEN
GOTO 300
ELSEIF((SEL.EQ.'H') .OR. (SEL.EQ.'h')) THEN
KEY=' '
LU=15
CALL HELP(KEY,LU)
ELSEIF(SEL.EQ.'1') THEN
CALL UPDATE
ELSEIF(SEL.EQ.'2') THEN
CALL LOOK
ELSEIF(SEL.EQ.'3') THEN
CALL MLIST
ELSEIF(SEL.EQ.'4') THEN
CALL BKLT
ELSEIF(SEL.EQ.'5') THEN
CALL PHONE
ELSEIF((SEL.EQ.'Q') .OR. (SEL.EQ.'q')) THEN
IF(IHLP.EQ.1) CLOSE(15)
CALL WRMAST
CALL CLS
STOP
ENDIF
GOTO 100
END
C
C
C
SUBROUTINE RDMAST
C
COMMON/MAIN1/ LAST,FIRST,ADD1,ADD2,CITY,STATE,ZIP,PH1,PH2
CHARACTER LAST(12,200)*1,FIRST(200)*23,ADD1(200)*30,ADD2(200)*30
CHARACTER CITY(200)*23,STATE(200)*2,ZIP(200)*5
CHARACTER PH1(200)*14,PH2(200)*14
C
COMMON/MAIN2/ STRID,SORT,MNUM
INTEGER*4 STRID(200),SORT(200),MNUM
C
CHARACTER*25 OPTION
C
C OPEN FILE FOR INPUT
C
OPTION='Loading Master File .....'
CALL HEADER(OPTION)
CALL KEYOFF
OPEN(20,FILE='ADDRESS.DAT')
C
C READ ALL DATA FROM MASTER FILE
C
I=0
100 CONTINUE
I=I+1
IF(I.GT.200) THEN
WRITE(*,'(A33)') 'Program Aborted Reading Master '
STOP
ENDIF
READ(20,200,END=300) (LAST(K,I),K=1,12),
A FIRST(I),ADD1(I),ADD2(I),CITY(I),
A STATE(I),ZIP(I),PH1(I),PH2(I),SORT(I),
A STRID(I)
200 FORMAT(12A1,A23,A30,A30,A23,A2,A5,A14,A14,I8,I3)
GOTO 100
300 CONTINUE
MNUM=I-1
CLOSE(20)
CALL KEYON
RETURN
END
C
C
C
SUBROUTINE WRMAST
C
COMMON/MAIN1/ LAST,FIRST,ADD1,ADD2,CITY,STATE,ZIP,PH1,PH2
CHARACTER LAST(12,200)*1,FIRST(200)*23,ADD1(200)*30,ADD2(200)*30
CHARACTER CITY(200)*23,STATE(200)*2,ZIP(200)*5
CHARACTER PH1(200)*14,PH2(200)*14
C
COMMON/MAIN2/ STRID,SORT,MNUM
INTEGER*4 STRID(200),SORT(200),MNUM
C
CHARACTER*25 OPTION
C
C OPEN FILE FOR OUTPUT
C
OPTION='Storing Master File .....'
CALL HEADER(OPTION)
CALL KEYOFF
OPEN(20,FILE='ADDRESS.DAT')
C
C WRITE ALL DATA TO MASTER LOOKUP FILE
C
DO 300 I=1,MNUM
WRITE(20,200) (LAST(K,I),K=1,12),
A FIRST(I),ADD1(I),ADD2(I),CITY(I),
A STATE(I),ZIP(I),PH1(I),PH2(I),SORT(I),
A STRID(I)
200 FORMAT(12A1,A23,A30,A30,A23,A2,A5,A14,A14,I8,I3)
300 CONTINUE
ENDFILE 20
CLOSE(20)
CALL KEYON
RETURN
END
C
C
C
SUBROUTINE SORTIT
C
COMMON/MAIN1/ LAST,FIRST,ADD1,ADD2,CITY,STATE,ZIP,PH1,PH2
CHARACTER LAST(12,200)*1,FIRST(200)*23,ADD1(200)*30,ADD2(200)*30
CHARACTER CITY(200)*23,STATE(200)*2,ZIP(200)*5
CHARACTER PH1(200)*14,PH2(200)*14
C
COMMON/MAIN2/ STRID,SORT,MNUM
INTEGER*4 STRID(200),SORT(200),MNUM
C
CHARACTER LLAST(12)*1,LFIRST*23,LADD1*30,LADD2*30,LCITY*23
CHARACTER LSTATE*2,LZIP*5,LPH1*14,LPH2*14,OPTION*25
INTEGER*4 LSORT,LSTID,KEEP,MIN
C
C CALL OPTION HEADER
C
OPTION='Sorting Master File .....'
CALL HEADER(OPTION)
C
C NOW SORT THE DATA
C
K=0
400 MIN=999999
K=K+1
IF(K.GE.MNUM) GOTO 500
DO 450 I=K,MNUM
IF(SORT(I).LT.MIN) THEN
MIN=SORT(I)
KEEP=I
ENDIF
450 CONTINUE
DO 460 J=1,12
460 LLAST(J)=LAST(J,K)
LFIRST=FIRST(K)
LADD1 =ADD1(K)
LADD2 =ADD2(K)
LCITY =CITY(K)
LSTATE=STATE(K)
LZIP =ZIP(K)
LPH1 =PH1(K)
LPH2 =PH2(K)
LSORT =SORT(K)
LSTID =STRID(K)
DO 470 J=1,12
470 LAST(J,K)=LAST(J,KEEP)
FIRST(K)=FIRST(KEEP)
ADD1(K) =ADD1(KEEP)
ADD2(K) =ADD2(KEEP)
CITY(K) =CITY(KEEP)
STATE(K)=STATE(KEEP)
ZIP(K) =ZIP(KEEP)
PH1(K) =PH1(KEEP)
PH2(K) =PH2(KEEP)
SORT(K) =SORT(KEEP)
STRID(K)=STRID(KEEP)
DO 480 J=1,12
480 LAST(J,KEEP)=LLAST(J)
FIRST(KEEP)=LFIRST
ADD1(KEEP) =LADD1
ADD2(KEEP) =LADD2
CITY(KEEP) =LCITY
STATE(KEEP)=LSTATE
ZIP(KEEP) =LZIP
PH1(KEEP) =LPH1
PH2(KEEP) =LPH2
SORT(KEEP) =LSORT
STRID(KEEP)=LSTID
GOTO 400
500 CONTINUE
RETURN
END