看板 NTUCE-94 關於我們 聯絡資訊
課本p481-484 p502-511 PROGRAM FIG9_16 INTEGER SENVAL,MAXSTK PARAMETER (SENVAL=0,MAXSTK=1000) INTEGER STOCK,QUANT,TOTAL REAL PRICE CHARACTER*20 AUTHOR,TITLE CHARACTER*8 DATE OPEN(UNIT=2,FILE='DIRINV',FORM='FORMATTED', + ACCESS='DIRECT',RECL=54,STATUS='NEW') PRINT *,'ENTER THE DATA IN THE FORM ''MM/DD/YY'':' READ *,DATE PRINT *,'ENTER EACH BOOK RECORD AS OF',DATE PRINT *,'STOCK NUMBER MUST BE BETWEEN 1 AND ',MAXSTK TOTAL=0 CALL INTLIZ(2) CALL GETREC(STOCK,AUTHOR,TITLE,PRICE,QUANT) DO WHILE((STOCK.GT.SENVAL).AND.(STOCK.LE.MAXSTK)) WRITE(UNIT=2,FMT=21, REC=STOCK) + STOCK,AUTHOR,TITLE,PRICE,QUANT 21 FORMAT (I4,A20,A20,F6.2,I4) TOTAL=TOTAL+QUANT CALL GETREC(STOCK,AUTHOR,TITLE,PRICE,QUANT) ENDDO PRINT *,TOTAL STOP END SUBROUTINE INTLIZ(UNUM) INTEGER UNUM INTEGER MAXSTK PARAMETER (MAXSTK=1000) INTEGER RECNUM DO 10 RECNUM=1,MAXSTK WRITE(UNIT=UNUM,FMT=11,REC=RECNUM) 11 FORMAT(A54) 10 CONTINUE RETURN END SUBROUTINE GETREC(STOCK,AUTHOR,TITLE,PRICE,QUANT) INTEGER STOCK,QUANT,TOTAL REAL PRICE CHARACTER*20 AUTHOR,TITLE PRINT*,'INPUT STOCK' READ*,STOCK PRINT*,'INPUT AUTHOR' READ '(A)',AUTHOR PRINT*,'INPUT TITLE' READ '(A)',TITLE PRINT*,'INPUT PRICE' READ*,PRICE PRINT*,'INPUT QUANT' READ*,QUANT RETURN END PROGRAM FIG9_17 INTEGER SENVAL,MAXSTK PARAMETER (SENVAL=0,MAXSTK=1000) INTEGER STOCK,QUANT,TOTAL,ORDER,RECNUM REAL PRICE CHARACTER*20 AUTHOR,TITLE OPEN(UNIT=2,FILE='DIRINV',FORM='FORMATTED', + ACCESS='DIRECT',RECL=54,STATUS='OLD') PRINT *,'ENTER RECORD NUMBER OF BOOK SOLD (OR 0 TO STOP):' READ*,RECNUM DO WHILE((RECNUM.GT.SENVAL).AND.(RECNUM.LE.MAXSTK)) PRINT *,'ENTER QUANTITY SOLD:' READ *,ORDER READ(UNIT=2,FMT=21,REC=RECNUM) + STOCK,AUTHOR,TITLE,PRICE,QUANT IF((STOCK.EQ.RECNUM).AND.(QUANT.GE.ORDER))THEN QUANT=QUANT-ORDER PRINT *,'NEW INVENTORY AMOUNT=',QUANT WRITE(UNIT=2,FMT=21, REC=RECNUM) + STOCK,AUTHOR,TITLE,PRICE,QUANT 21 FORMAT (I4,A20,A20,F6.2,I4) ELSE IF (STOCK.EQ.0)THEN PRINT*,'ERROR-RECORD DOES NOT EXIST' ELSE IF(STOCK.NE.RECNUM)THEN PRINT*,'ERROR-RECORD AND STOCK NUMBER DON''T MATCH' ELSE PRINT*,'INVENTORY INSUFFICIENT TO FILL ORDER' ENDIF PRINT*,'ENTER RECORD NUMBER OF BOOK SOLD (OR 0 TO STOP):' READ*,RECNUM ENDDO STOP END -- ※ 發信站: 批踢踢實業坊(ptt.twbbs.org) ◆ From: 140.112.22.37