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
/
RB117
/
vehic2.for
< prev
next >
Wrap
Text File
|
1995-05-28
|
6KB
|
214 lines
C
C VEHICLE MAINTENANCE PRGM by Bruce W. Roeckel
C *--------------------------*
C OPTION #2 - REPAIRS
C
C
$STORAGE:2
C
C
SUBROUTINE REPAIR
C
COMMON/MONTHS/ IMON
CHARACTER*4 IMON(13)
C
COMMON/MAIN1/ NAME,IDNUM,DATE,RFILE,MFILE
CHARACTER NAME(25)*20,IDNUM(25)*20,DATE(2,25)*8
CHARACTER RFILE(25)*11,MFILE(25)*11
C
COMMON/MAIN2/ COST,ODOM,VNUM
INTEGER VNUM
REAL COST(2,25),ODOM(2,25)
C
COMMON/REPAR1/ RDESC,RDATE
CHARACTER RDESC(500)*25,RDATE(500)*8
C
COMMON/REPAR2/ RCODE,RCOST,RODOM,RNUM
INTEGER RCODE(500),RNUM
REAL RCOST(500),RODOM(500)
C
INTEGER SEL,ICODE,TYPE,OLD
CHARACTER TEST*8,OPTION*25,RAMDSK*80,CHOICE(2)*1
REAL GALS
C
C LIST ALL CARS, SELECT ONE TO WORK WITH
C
SEL=0
TYPE=1
OPTION='Update Repair Log '
CALL HEADER(OPTION)
CALL LISTEM(TYPE,SEL)
IF(SEL.EQ.0) RETURN
CALL RDREPS(SEL)
C
C DISPLAY SELECTED CAR
C
25 CONTINUE
CALL HEADER(OPTION)
CALL DNAME(SEL)
C
C DRAW A SOLID LINE
C
CALL MOVEIT(1,21)
CALL BOLD
CALL ULINE
WRITE(*,'(80X)')
CALL OFF
C
C ASK FOR DATA
C
50 CONTINUE
LM=RNUM
CALL UPTOP (1,10)
CALL OFF
WRITE(*,100)
100 FORMAT(//,18X,'1. Oil Change w/Filter 6. Alignment ',
A /,18X,'2. Lubrication 7. Front Brakes ',
B /,18X,'3. Air Filter 8. Rear Brakes ',
C /,18X,'4. Dist. Points 9. Tire Rotation ',
D /,18X,'5. Spark Plugs 98. Special Repair',
E /,18X,' ',
F ///,18X,' ')
150 CONTINUE
CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(9X,A33,\)') 'Enter Choice (H=Help, Q=Quit) : '
READ(*,'(2A1)',ERR=150) (CHOICE(K),K=1,2)
CALL OFF
IF(CHOICE(1).EQ.'Q' .OR. CHOICE(1).EQ.'q') THEN
CALL WRREPS(SEL)
GOTO 900
ELSEIF(CHOICE(1).EQ.'H' .OR. CHOICE(1).EQ.'h') THEN
CHOICE(1)='2'
IUNIT=15
CALL HELP(CHOICE(1),IUNIT)
GOTO 25
ELSEIF(CHOICE(1).EQ.'1' .OR. CHOICE(1).EQ.'2' .OR.
A CHOICE(1).EQ.'3' .OR. CHOICE(1).EQ.'4' .OR.
B CHOICE(1).EQ.'5' .OR. CHOICE(1).EQ.'6' .OR.
C CHOICE(1).EQ.'7' .OR. CHOICE(1).EQ.'8' .OR.
D CHOICE(1).EQ.'9') THEN
WRITE(RAMDSK,'(A1)') CHOICE(1)
READ(RAMDSK,'(I1)') ICODE
LM=RNUM+1
C
C IF CATAGORY 1 THRU 9, THEN UPDATE THAT ENTRY WITH DATA
C
IF(CHOICE(2).EQ.' ') THEN
DO 155 JL=1,RNUM
IF(RCODE(JL).EQ.ICODE) LM=JL
155 CONTINUE
ELSEIF(CHOICE(1).EQ.'9' .AND. CHOICE(2).EQ.'8') THEN
ICODE = 98
ELSE
CALL BELL
GOTO 150
ENDIF
C
C POINT TO SELECTION, PROMPT FOR ALL DATA
C
RCODE(LM)=ICODE
IF(ICODE.LE.5) THEN
LH=16
LV=11+ICODE
ELSEIF(ICODE.EQ.98) THEN
LH=43
LV=16
ELSE
LH=44
LV=11+(ICODE-5)
ENDIF
CALL UPTOP(LH,LV)
CALL BOLD
CALL BLINK
WRITE(*,'(A3)') '==>'
CALL OFF
C
C REPAIR DATE
C
160 CONTINUE
CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(5X,A30,\)') ' Date Repaired ? (MM/DD/YY) : '
CALL OFF
TEST=' '
CALL EDATE(38,23,TEST)
IF(TEST.EQ.' ') THEN
GOTO 50
ELSE
RDATE(LM)=TEST
ENDIF
C
C NOW ASK FOR A DESCRIPTION IF SPECIAL TYPE
C
IF(ICODE.EQ.98) THEN
175 CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(5X,A30,\)') 'Enter Description of Repair : '
CALL OFF
RAMDSK=' '
CALL EDCHR(38,23,RAMDSK,25)
RDESC(LM)=RAMDSK
ELSE
180 CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(5X,A30,\)') ' Any Notes About Repair ? : '
CALL OFF
RAMDSK=' '
CALL EDCHR(38,23,RAMDSK,25)
RDESC(LM)=RAMDSK
ENDIF
C
C NOW THE COST
C
ITRY=0
200 CONTINUE
CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(5X,A30,\)') ' Cost of the Repair ? : '
CALL OFF
GALS=0.0
CALL EDREL(38,23,GALS,8)
IF(GALS.LE.0.0 .AND. ITRY.EQ.0) THEN
ITRY=1
CALL BELL
GOTO 200
ENDIF
IF(LM.LE.RNUM) THEN
RCOST(LM)=RCOST(LM) + GALS
ELSE
RCOST(LM)=GALS
ENDIF
C
C AND LAST, THE ODOMETER READING
C
300 CONTINUE
CALL MOVEIT(1,23)
CALL BOLD
WRITE(*,'(5X,A30,\)') ' Odometer Reading : '
CALL OFF
GALS=0.0
CALL EDREL(38,23,GALS,8)
IF(GALS.LE.0.0) THEN
CALL BELL
GOTO 300
ENDIF
IF(DATE(2,SEL).EQ.' ') GALS=GALS+ODOM(2,SEL)
RODOM(LM)=GALS
C
C INCREMENT COUNTER, CREATE FILE NAME IF NECESSARY
C
IF(LM.GT.RNUM) RNUM=RNUM+1
IF(RNUM.EQ.1) THEN
WRITE(RAMDSK,'(A5,I2.2,A4)') 'VEHIC',SEL,'.REP'
READ(RAMDSK,'(A11)') RFILE(SEL)
ENDIF
ELSE
CALL BELL
GOTO 150
ENDIF
GOTO 50
900 CONTINUE
RETURN
END