PROGRAM SMERFS C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C IFDEF UPDATE C D O U B L E P R E C I S I O N M O D E L C PROGRAM STATEMENT C PROGRAM SMERFS C C POINT OF CONTACT C DR. WILLIAM H. FARR (B10) C NAVAL SURFACE WARFARE CENTER DAHLGREN DIVISION (NSWCDD) C DAHLGREN, VIRGINIA 22448-5000 C C OFFICE PHONE (703) 663-8388 C AUTHOR C THE BLOOD, SWEAT, AND SLEEPLESS NIGHTS OF THE FOLLOWING PERSONS C ARE RESPONSIBLE FOR THE COMPLETE SMERFS PROGRAM; INDIVIDUAL RE- C FERENCES WILL BE MADE AT THE ROUTINE LEVEL. C C WILLIAM H. FARR (B10, NSWCDD) C OLIVER D. SMITH (EG&G WASC) C JAMES S. VANDERGRAFT (COMPUTATIONAL ENGINEERING, INC) C PAUL J. KRAUS (COMPUTATIONAL ENGINEERING, INC) C CINDY A. WELLS (COMPUTATIONAL ENGINEERING, INC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) & OLIVER D. SMITH (EG&G WASC) C PURPOSE C THE STATISTICAL MODELING AND ESTIMATION OF RELIABILITY FUNC- C TIONS FOR SOFTWARE (SMERFS) PROGRAM ACTS AS A VEHICLE TO ACCESS C THE SMERFS LIBRARY (SMFLIB). IT IS IN THOSE ROUTINES THAT THE C REAL PROCESSING FOR THE RESULTANT SOFTWARE RELIABILITY STATIS- C TICS WILL BE CONDUCTED. C DESCRIPTION C THE SMERFS PROGRAM IS DESIGNED TO ACCEPT THREE TYPES OF ERROR C DATA. THESE THREE TYPES ARE: C 1) WALL CLOCK (WC) TIME-BETWEEN-FAILURES (TBF) DATA, C 2) CENTRAL PROCESSING UNITS (CPU) TBF DATA, AND C 3) INTERVAL (FAULT COUNTS AND TESTING LENGTHS) DATA. C C THE COMBINATION OF THE ABOVE TYPES OF DATA WITHIN A SINGLE EXE- C CUTION IS GOVERNED BY CERTAIN RULES. THESE RULES ARE THE RESULT C OF THE METHOD OF STORAGE OF THE DATA IN THE PROGRAM. C 1) IF INTERVAL DATA (OF FAULTS AND TESTING LENGTHS) ARE BEING C ANALYZED, WC AND CPU TBF DATA CANNOT BE. C 2) IF INTERVAL DATA ARE NOT BEING ANALYZED, EITHER WC AND/OR C CPU TBF DATA CAN BE ANALYZED. C 3) IF BOTH WC AND CPU TBF DATA ARE TO BE ANALYZED, BOTH SETS C OF DATA MUST HAVE THE SAME NUMBER OF ENTRIES. C C THE PROGRAM ALSO ALLOWS FOR THREE TYPES OF DATA INPUT. C 1) KEYBOARD ENTRY - WHERE THE PROGRAM PROMPTS FOR ALL DATA, C 2) ASCII FILE INPUT - WHERE THE ERROR DATA ARE READ FROM THE C FILE, AND THE ADDITIONAL INFORMATION (SUCH AS THE UNITS OF C THE TBF DATA) ARE PROMPTED FOR, AND C 3) "STANDARD" INPUT - WHERE THE FILE CREATED FROM A PREVIOUS C EXECUTION IS READ. C C SMERFS NOT ONLY ALLOWS FOR THE INPUT AND STORAGE OF THE THREE C ERROR TYPES, IT ALSO ALLOWS FOR THE EDITING OF THOSE TYPES. THE C OPTION (CONTAINED IN THE SECOND MODULE) IS SUPPLIED TO HANDLE C THE AGE-OLD PROBLEM OF USER-INPUT ERRORS AND THE SITUATION OF A C RECORDED ERROR(S) SUBSEQUENTLY BEING DETERMINED NOT TO BE AN C ACTUAL SOFTWARE ERROR. C C THE THIRD SMERFS MODULE ALLOWS FOR UNIT TRANSFORMATIONS OF THE C STORED DATA. THIS OPTION IS SUPPLIED IN HOPES OF OBTAINING A C BETTER MODEL FIT AND ONLY APPLIES TO THE TBF DATA TYPES (WC AND C CPU). ONCE THE TRANSFORMATION IS PERFORMED, THE DATA BASE FILES C ARE UPDATED UNDER THIS MODULE OPTION. C C THE FOURTH SMERFS MODULE ALLOWS FOR OTHER TRANSFORMATIONS OF C THE STORED DATA. IT IS SIMILAR IN FUNCTIONALITY TO THE THIRD C MODULE; HOWEVER, THE DATA BASE FILES WILL NOT BE UPDATED. C C ONCE THE DATA BASE IS INPUT (AND POSSIBLY EDITED AND/OR TRANS- C FORMED), GENERAL STATISTICS AND PLOT(S) OF THE DATA CAN BE OB- C TAINED THROUGH THE FIFTH AND SIXTH MODULES, RESPECTIVELY. THE C GENERATION OF THE PLOTS ARE PERFORMED UTILIZING AN INTERNAL C LINE PRINTER PLOTTER. (SEE MODULE NINE.) C C THE SEVENTH SMERFS MODULE CONTAINS THE MODEL APPLICABILITY ANA- C LYSIS: ACCURACY, BIAS, NOISE, AND TREND. CURRENTLY, THE ONLY C ANALYSIS AVAILABLE FOR INTERVAL DATA ANALYSIS IS THE ACCURACY. C C THE EIGHTH SMERFS MODULE CONTAINS THE ACTUAL ERROR DATA ANALY- C SIS. SIX ROUTINES ARE SUPPLIED FOR EXECUTION TIME DATA AND FIVE C ARE SUPPLIED FOR INTERVAL DATA. THE SOFTWARE RELIABILTIY MODELS C WHICH OPERATE WITH TIME-TO-FAILURE (TTF) DATA DO NOT REQUIRE AN C EXTRA PROCESSING BY THE USERS. THE SMERFS PROGRAM AUTOMATICALLY C PERFORMS THE CONVERSION OF THE TBF DATA TO TTF DATA, BY SUMMING C THE TBF ENTRIES. C C MODULE NINE TERMINATES THE EXECUTION OF THE SMERFS PROGRAM. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C WARNINGS C THE SMERFS DRIVER AND LIBRARY UTILIZE THE FORTRAN 77 IMPLICIT C STATEMENT TO SPECIFY EITHER SINGLE OR DOUBLE PRECISION COMPUTA- C TIONS. THIS VOIDS THE STANDARD INTEGER DEFAULT SPECIFICATIONS C (I.E., THE "I" TO "N" RULE); ALL INTEGERS MUST BE DECLARED. C FILES C INPUT (I) = USER INPUT RESPONSES TO PROMPTS C OUTPUT (O) = PROGRAM PROMPTS C UNIT11 (I) = STANDARD SMERFS WC TBF FILE C UNIT12 (I) = STANDARD SMERFS CPU TBF FILE C UNIT13 (I) = STANDARD SMERFS INTERVAL COUNT & LENGTH FILE C UNIT14 (O) = UNIT11 UPDATED C UNIT15 (O) = UNIT12 UPDATED C UNIT16 (O) = UNIT13 UPDATED C UNIT17 (O) = EXECUTION HISTORY FILE C UNIT18 (B) = TEMPORARY STORAGE FILE (BINARY) C UNIT20 (O) = EXECUTION PLOTTING FILE C UNIT21 (I) = OPTIONAL ASCII WC TBF FILE C UNIT22 (I) = OPTIONAL ASCII CPU TBF FILE C UNIT23 (I) = OPTIONAL ASCII INTERVAL COUNT & LENGTH FILE C PARAMETER GLOSSARY C END1 (I) = INDEX TO END OF FIRST SET OF DATA C END2 (I) = INDEX TO END OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C BOTH C DAT (R) = ARRAY TO HOLD OBSERVED DATA OF SIZE END2 C DATTYP (I) = FLAG INDICATING THE DATA TYPE BEING ANALYZED C ESC (I) = ESTIMATION SELECTION CODE TO INDICATE MODEL C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C PRD (R) = ARRAY TO HOLD PREDICTED DATA OF SIZE END1 C UPDFLG (I) = FLAG TO CONTROL FILE DATA INPUT AND UPDATE C YIELDED C PLTTYP (I) = ANALYSIS PLOT TYPE C LOCAL GLOSSARY C FLAG (I) = OPTION FLAG C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C EXTERNAL FILES C SMERFS LIBRARY FILE C REFERENCES C "ALGORITHMS FOR MINIMIZATION WITHOUT DERIVATIVES," R.P. BRENT, C PRENTICE-HALL, 1972. (FOR THE SUPPLIED DEKKER-BRENT MINIMIZA- C TION ALGORITHM) C C "APPLICATIONS, BASICS, AND COMPUTING OF EXPLORATORY DATA ANALY- C SIS," P. VELLEMEN & D. HOAGLIN, DUXBURY PRESS, BOSTON, MASS., C 1981. (FOR THE SUPPLIED SMOOTHING ROUTINE) C C "A SURVEY OF SOFTWARE RELIABILITY MODELING AND ESTIMATION," C WILLIAM H. FARR, DAHLGREN, VA., NSWC TR 83-171, 1983. C C "A TRUST REGION METHOD FOR MAXIMUM LIKELIHOOD PARAMETER ESTIMA- C TION," JAMES VANDERGRAFT, LAUREL, MD., CEI BTS25-87-26, 1987. C C "COMPUTER METHODS FOR MATHEMATICAL COMPUTATIONS," G.E. FORSYTHE C M.A. MALCOLM & C.B. MOLER, PRENTICE-HALL, 1977. (FOR DEKKER- C BRENT SUPPLIED MINIMIZATION ALGORITHM) C C "COMPUTER PROGRAMMING AND CODING STANDARDS FOR THE FORTRAN AND C SIMSCRIPT II.5 PROGRAMMING LANGUAGES," ROBERT BEVAN & JOHN REY- C NOLDS, DAHLGREN, VA., NSWC TR 3878, REVISED 1981. C C "NUMERICAL METHODS FOR UNCONSTRAINED OPTIMIZATION AND NONLINEAR C EQUATIONS," J. DENNIS & B. SCHNABEL, PRENTICE-HALL, 1983. (FOR C TRUST REGION SUPPLIED MINIMIZATION ALGORITHM) C C "STATISTICAL MODELING AND ESTIMATION OF RELIABILITY FUNCTIONS C FOR SOFTWARE (SMERFS) LIBRARY ACCESS GUIDE," WILLIAM H. FARR & C OLIVER D. SMITH, DAHLGREN, VA., NSWCDD TR 84-371, REVISED 1993. C C "STATISTICAL MODELING AND ESTIMATION OF RELIABILITY FUNCTIONS C FOR SOFTWARE (SMERFS) USER'S GUIDE," WILLIAM H. FARR & OLIVER C D. SMITH, DAHLGREN, VA., NSWCDD TR 84-373, REVISED 1993. C C "TOOLS FOR THE ANALYSIS OF THE ACCURACY OF SOFTWARE RELIABILITY C PREDICTIONS," B. LITTLEWOOD, A. A. ABDEL GHALY, P. Y. CHAN, C SOFTWARE SYSTEM DESIGN METHODS, EDITED BY J. K. SKWIRZYNSKI, C NATO ASI SERIES, VOL F22, SPRINGER-VERLOG, 1986, PP. 299-333. C C WILLIAM H. FARR, PHD (B10, NSWCDD) FOR ALL STATISTICAL INFORMA- C TION NOT DIRECTLY ACCESSIBLE FROM NSWC TR 82-171. C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END1 PARAMETER (END1 = 1000) INTEGER END2 PARAMETER (END2 = 2000) C C GLOBAL SPECIFICATIONS C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C /PLTCOM/ PLOTTING COMMON COMMON /PLTCOM/ MAKFIL ,PLTTYP INTEGER MAKFIL ,PLTTYP C C /PRECOM/ PREDICTION DATA STORAGE COMMON COMMON /PRECOM/ PRD(END1) ,XPRD(3) ,D 1 ,DFLG ,ESC ,ESD 2 ,EST INTEGER DFLG ,ESC ,ESD 1 ,EST C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER FLAG ,I ,J C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 300 FORMAT (' ' 1 ,/,' ENTER MAIN MODULE OPTION, OR ZERO FOR A LIST.') 305 FORMAT ('1') 310 FORMAT (' THE AVAILABLE MAIN MODULE OPTIONS ARE:' 1 ,/,' 1 DATA INPUT 6 PLOT(S) OF THE RAW DATA' 2 ,/,' 2 DATA EDIT 7 MODEL APPLICABILITY ANA' 3 ,'LYSES' 4 ,/,' 3 UNIT CONVERSIONS 8 EXECUTIONS OF THE MODEL' 5 ,'S' 6 ,/,' 4 DATA TRANSFORMATIONS 9 STOP EXECUTION OF SMERF' 7 ,'S' 8 ,/,' 5 DATA STATISTICS' 9 ,/,' ENTER MAIN MODULE OPTION.') 315 FORMAT (' ' 1 ,//,' THE SMERFS EXECUTION HAS ENDED.') C C ********************** START OF EXECUTABLE CODE ********************** C C ESTABLISH THE SMERFS HISTORY, PLOT, AND INTERNAL SCRATCH FILES. C THE PROGRAM HEADER WILL ALSO BE OUTPUT BY THE ACCESSED ROUTINE. CALL FILOPN C C SET GLOBAL VARIABLES TO INDICATE THE ANALYSIS DATA TYPE HAS NOT C BEEN ESTABLISHED, THE INPUT DATA FILES MAY BE ACCESSED, AND THE C PREDICTION VECTOR IS EMPTY. DATTYP = 0 UPDFLG = -1 ESC = 0 C C PRESET THE PROCESSING, DATA, AND PREDICTION STORAGE ARRAYS. DO 1025 I = 1, 3 DO 1000 J = 1, 3 PRC(I,J) = 0 1000 CONTINUE C ENDDO 1025 CONTINUE C ENDDO C DO 1050 I = 1, END2 DAT(I) = 0.0 1050 CONTINUE C ENDDO C DO 1075 I = 1, END1 PRD(I) = 0.0 1075 CONTINUE C ENDDO C CALL INPDRV C C DOWHILE (MODULE SELECTION .NE. STOP) 1100 WRITE ( *,300) WRITE (HIST,305) WRITE (HIST,300) READ ( *, *) FLAG WRITE (HIST, *) FLAG IF ((FLAG.LT.1) .OR. (FLAG.GT.9)) THEN WRITE ( *,310) WRITE (HIST,310) READ ( *, *) FLAG WRITE (HIST, *) FLAG ENDIF IF ((FLAG.LT.1) .OR. (FLAG.GT.8)) GO TO 1125 C IF (FLAG.EQ.1) THEN CALL INPDRV C ELSEIF (FLAG.EQ.2) THEN CALL EDTDRV C ELSEIF (FLAG.EQ.3) THEN CALL CNVDRV C ELSEIF (FLAG.EQ.4) THEN CALL TRNDRV C ELSEIF (FLAG.EQ.5) THEN CALL STADRV C ELSEIF (FLAG.EQ.6) THEN PLTTYP = 1 CALL PLTDRV C ELSEIF (FLAG.EQ.7) THEN CALL MAADRV C ELSE CALL MDLDRV ENDIF GO TO 1100 1125 CONTINUE C ENDWHILE C C SCRIPT THE TERMINATION MESSAGE AND CLOSE ALL OPENED FILES. WRITE ( *,315) WRITE (HIST,315) CALL FILCLS END BLOCK DATA SMF5BD C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C (NONE) C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO PRESET SMERFS5 COMMON BLOCKS. C DESCRIPTION C THIS ROUTINE SIMPLY DEFINES SPECIFIC VALUES OF THE SMERFS5 COM- C MON BLOCKS. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C (NONE) C GLOBAL GLOSSARY C YIELDED C CNV (R) = TBF DATA CONVERSION CONSTANTS C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C PLOT (I) = UNIT NUMBER FOR THE PLOT FILE C PMAX (R) = MAXIMUM NUMBER OF ITERATIONS FOR PREDICTIONS C TMPB (I) = UNIT NUMBER FOR THE TMP BINARY STORAGE FILE C TYPES (C) = DATA TYPE LABELS C UNITS (C) = UNIT LABELS FOR THE TBF DATA TYPES C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C (NONE) C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS C (NONE) C C GLOBAL SPECIFICATIONS C C /CNVCOM/ TBF DATA CONVERSION CONSTANTS COMMON COMMON /CNVCOM/ CNV(6) C C /LBLCOM/ DATA TYPES AND TBF UNITS LABELS COMMON COMMON /LBLCOM/ TYPES(3) ,UNITS(7) CHARACTER* 7 UNITS CHARACTER*10 TYPES C C /PMXCOM/ PREDICTION MAXIMUM ITERATION COMMON COMMON /PMXCOM/ PMAX C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS C C PRESET THE TBF DATA CONVERSION ARRAY. DATA CNV(1) / 60.0 / DATA CNV(2) / 60.0 / DATA CNV(3) / 24.0 / DATA CNV(4) / 7.0 / DATA CNV(5) / 4.0 / DATA CNV(6) / 12.0 / C C PRESET THE DATA TYPE LABELS. DATA TYPES(1) /' WC TBF '/ DATA TYPES(2) /' CPU TBF '/ DATA TYPES(3) /' INTERVAL '/ C C PRESET THE PREDICTION MAXIMUM ITERATION VALUE. DATA PMAX / 1000.0 / C C PRESET THE UNIT LABELS FOR THE TBF DATA. DATA UNITS(1) /'SECONDS'/ DATA UNITS(2) /'MINUTES'/ DATA UNITS(3) /'HOURS '/ DATA UNITS(4) /'DAYS '/ DATA UNITS(5) /'WEEKS '/ DATA UNITS(6) /'MONTHS '/ DATA UNITS(7) /'YEARS '/ C C PRESET THE UNIT NUMBERS FOR THE SMERFS5 FILES. DATA HIST / 17 / DATA PLOT / 20 / DATA TMPB / 18 / C C ********************* START OF FORMAT STATEMENTS ********************* C C (NONE) C C ********************** START OF EXECUTABLE CODE ********************** C END FUNCTION CNV24H G (HR ) C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C FUNCTION CNV24H C G (HR ) C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO TRANSLATE THE GIVEN ARGUMENT HR TO THE SPECIFIED UNITS. C DESCRIPTION C THE CNV24H FUNCTION CONVERTS THE ARGUMENT HR INTO MINUTES BY C EXTRACTING THE TOTAL NUMBER OF HOURS (HRSPRT) AS A SUBSET OF C THE ARGUMENT HR, CONVERTING THE SUBSET INTO MINUTES, AND ADDING C THE REMAINDER (HR - HRSPRT). C C THE ROUTINE THEN CONVERTS THE MINUTES INTO THE SPECIFIED UNITS, C FOLLOWING A STRATEGY SIMILAR TO THAT IN THE CNVDRV ROUTINE. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C END2 (I) = INDEX TO END OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C CNV (R) = TBF DATA CONVERSION CONSTANTS C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C ARGUMENT LIST C GIVEN C HR (R) = TIME MEASURED ON A 24 HOUR CLOCK C YIELDED C CNV24H (R) = TIME CONVERTED TO THE SPECIFIED UNITS C LOCAL GLOSSARY C CUNIT (I) = CONVERSION UNIT NUMBER C HRSPRT (I) = HOURS PORTION OF HR C MNSPRT (R) = MINUTES PORTION OF HR C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END2 PARAMETER (END2 = 2000) C C GLOBAL SPECIFICATIONS C C /CNVCOM/ TBF DATA CONVERSION CONSTANTS COMMON COMMON /CNVCOM/ CNV(6) C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER CUNIT ,HRSPRT C C ********************* START OF FORMAT STATEMENTS ********************* C C (NONE) C C ********************** START OF EXECUTABLE CODE ********************** C HRSPRT = INT(HR / 100.0) MNSPRT = HR - REAL(HRSPRT * 100) CNV24H = REAL(HRSPRT * 60) + MNSPRT C C SET THE CURRENT UNIT NUMBER TO INDICATE MINUTES. CUNIT = 2 C IF (CUNIT.NE.PRC(1,3)) THEN C DOUNTIL (PROPER UNITS ACHIEVED) 1000 IF (CUNIT.LT.PRC(1,3)) THEN CNV24H = CNV24H / CNV(CUNIT) CUNIT = CUNIT + 1 ELSE CUNIT = CUNIT - 1 CNV24H = CNV24H * CNV(CUNIT) ENDIF IF (CUNIT.NE.PRC(1,3)) GO TO 1000 C ENDUNTIL ENDIF RETURN END SUBROUTINE CNVDRV C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE CNVDRV C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO PERFORM A SPECIALIZE DATA TRANSFORMATION OF THE UNITS OF TBF C DATA SETS. C DESCRIPTION C THE CNVDRV ROUTINE HOUSES NO ACTUAL DATA TRANSFORMATION STEPS; C IT MERELY SERVES AS AN INPUT VEHICLE. THE SMFTRN ROUTINE PER- C FORMS THE DATA CONVERSION, THE DATLST ROUTINE GENERATES THE DA- C TA LISTINGS, AND THE OUTPRM ROUTINE GENERATES THE NEW DATA BASE C FILES. C C THIS ROUTINE SIMPLY STEPS THROUGH THE VARIOUS CONVERSIONS. FOR C EXAMPLE, IF THE DATA SET IS STORED IN SECONDS AND HOURS ARE DE- C SIRED, A DIVISION BY CNV(2) WILL OCCUR TO CONVERT THE SECONDS C TO MINUTES. THEN A DIVISION BY CNV(1) WILL OCCUR TO CONVERT C THE MINUTES TO HOURS. C C GOING THE OTHER WAY (FROM LARGER TO SMALLER UNITS) THE SAME AC- C TION IS PERFORMED; HOWEVER, THE DATA ARE MULTIPLIED. C C AFTER UNIT CONVERSION IS COMPLETED THE USER WILL BE GIVEN THE C OPPORTUNITY TO REPLACE THE DATA BASE FILE(S), PROVIDED THE UP- C DATE FLAG INDICATES THAT THE UPDATE FILES WERE GENERATED. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C END1 (I) = INDEX TO END OF FIRST SET OF DATA C END2 (I) = INDEX TO END OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C CNV (R) = TBF DATA CONVERSION CONSTANTS C DATTYP (I) = FLAG INDICATING THE DATA TYPE BEING ANALYZED C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C TYPES (C) = DATA TYPE LABELS C UNITS (C) = UNIT LABELS FOR THE TBF DATA TYPES C UPDFLG (I) = FLAG TO CONTROL FILE DATA INPUT AND UPDATE C BOTH C DAT (R) = ARRAY TO HOLD OBSERVED DATA OF SIZE END2 C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C A (R) = TRANSFORMATION VARIABLE FROM CNV C DUM (R) = TRANSFORMATION VARIABLE 2 - PLACE HOLDER C ERRFLG (I) = TRANSFORMATION ERROR FLAG - N/A C IDXB (I) = POINTER TO THE BEGINNING OF DATA C IU (I) = FILE INPUT UNIT VARIABLE C NUNIT (I) = NEW UNIT NUMBER (DESIRED) C ERRORS C "DATA TYPE ERROR; TRY AGAIN (AFTER THE PROMPT)." C "THIS OPTION IS NOT APPLICABLE FOR INTERVAL DATA." C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END1 PARAMETER (END1 = 1000) INTEGER END2 PARAMETER (END2 = 2000) C C GLOBAL SPECIFICATIONS C C /CNVCOM/ TBF DATA CONVERSION CONSTANTS COMMON COMMON /CNVCOM/ CNV(6) C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C /LBLCOM/ DATA TYPES AND TBF UNITS LABELS COMMON COMMON /LBLCOM/ TYPES(3) ,UNITS(7) CHARACTER* 7 UNITS CHARACTER*10 TYPES C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER ERRFLG ,FLAG ,I 1 ,IDXB ,IU ,NUNIT C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 300 FORMAT (' ENTER ONE FOR WC TBF OR TWO FOR CPU TBF.') 305 FORMAT (' **DATA TYPE ERROR; TRY AGAIN (AFTER THE PROMPT).') 310 FORMAT (' **THIS OPTION IS NOT APPLICABLE FOR INTERVAL DATA.') 315 FORMAT (' ' 1 ,/,' THE',A10,'DATA ARE CURRENTLY STORED IN ',A7,'.' 2 ,//,' THE DATA MAY BE CONVERTED TO THE FOLLOWING UNITS:' 3 ,/,' 1 SECONDS 3 HOURS 5 WEEKS 7 YEARS' 4 ,/,' 2 MINUTES 4 DAYS 6 MONTHS' 5 ,/,' ENTER NEW CODE NUMBER FOR THE DATA.') 320 FORMAT (' ' 1 ,/,' ENTER ONE TO LIST THE CURRENT DATA; ELSE ZERO.') 325 FORMAT (' ' 1 ,/,' ENTER ONE TO SAVE THE NEW',A10,'DATA; ELSE ZERO.') C C ********************** START OF EXECUTABLE CODE ********************** C C SET POINTERS NEEDED FOR DATA TRANSFORMATION. I = 0 IF (DATTYP.LE.2) THEN I = DATTYP ELSEIF (DATTYP.EQ.3) THEN C DOWHILE (ERROR ON INPUT) 1000 WRITE ( *,300) WRITE (HIST,300) READ ( *, *) I WRITE (HIST, *) I IF ((I.EQ.1) .OR. (I.EQ.2)) GO TO 1025 WRITE ( *,305) WRITE (HIST,305) GO TO 1000 1025 CONTINUE C ENDWHILE ELSE WRITE ( *,310) WRITE (HIST,310) ENDIF C IF (I.NE.0) THEN WRITE ( *,315) TYPES(I), UNITS(PRC(I,3)) WRITE (HIST,315) TYPES(I), UNITS(PRC(I,3)) READ ( *, *) NUNIT WRITE (HIST, *) NUNIT C C DETERMINE THE BEGINNING ADDRESS OF THE DATA. IDXB = (I * END1) - (END1 - 1) C IF (PRC(I,3).NE.NUNIT) THEN C DOUNTIL (PROPER UNITS ACHIEVED) 1050 IF (PRC(I,3).GT.NUNIT) THEN PRC(I,3) = PRC(I,3) - 1 A = CNV(PRC(I,3)) ELSE A = 1.0 / CNV(PRC(I,3)) PRC(I,3) = PRC(I,3) + 1 ENDIF C CALL SMFTRN G (PRC(I,1) , A , DUM , 5 B ,DAT(IDXB) Y ,ERRFLG ) IF (PRC(I,3).NE.NUNIT) GO TO 1050 C ENDUNTIL ENDIF C C DETERMINE IF THE CURRENT DATA LISTING IS DESIRED. WRITE ( *,320) WRITE (HIST,320) READ ( *, *) FLAG WRITE (HIST, *) FLAG IF (FLAG.EQ.1) THEN CALL DATLST ENDIF C IF (UPDFLG.EQ.1) THEN C GENERATE THE NEW DATA BASE FILES, IF UPDATE IS DESIRED. WRITE ( *,325) TYPES(I) WRITE (HIST,325) TYPES(I) READ ( *, *) FLAG WRITE (HIST, *) FLAG IF (FLAG.EQ.1) THEN C OUTPUT THE DATA IN THE NEW SMERFS5 FORMAT. IU = I + 13 CALL OUTPRM G (I , IU ) ENDIF ENDIF ENDIF RETURN END SUBROUTINE DATLST C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE DATLST C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO GENERATE A LISTING OF THE DATA WITHIN THE DATA VECTOR. C DESCRIPTION C THIS ROUTINE MERELY GENERATES A LISTING OF THE CURRENT DATA. IT C REQUIRES NO ADDITIONAL USER INPUTS, AS THE DATA TYPE IS DETER- C MINED THROUGH THE GLOBAL VARIABLE DATTYP. C C IT IS POINTED OUT THAT THE APPEARANCE OF THE WORD "INCOMPLETE" C BY THE LAST LISTED TBF ENTRY INDICATES THAT TESTING CONTINUED C AFTER THE FINAL FAILURE (IN THE NEXT TO LAST ENTRY). (I.E., THE C THE TIME REFLECTED IN THE FINAL ENTRY IS FAILURE-FREE.) C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C END1 (I) = INDEX TO END OF FIRST SET OF DATA C END2 (I) = INDEX TO END OF SECOND SET OF DATA C STR2 (I) = INDEX TO BEGINNING OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C DAT (R) = ARRAY TO HOLD OBSERVED DATA OF SIZE END2 C DATTYP (I) = FLAG INDICATING THE DATA TYPE BEING ANALYZED C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C UNITS (C) = UNIT LABELS FOR THE TBF DATA TYPES C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C (NONE) C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END1 PARAMETER (END1 = 1000) INTEGER END2 PARAMETER (END2 = 2000) INTEGER STR2 PARAMETER (STR2 = 1001) C C GLOBAL SPECIFICATIONS C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C /LBLCOM/ DATA TYPES AND TBF UNITS LABELS COMMON COMMON /LBLCOM/ TYPES(3) ,UNITS(7) CHARACTER* 7 UNITS CHARACTER*10 TYPES C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER I ,J ,K 1 ,L ,M C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 300 FORMAT (' ' 1 ,/,4X,' FAILURE TIME-BETWEEN' 2 ,/,4X,' NUMBER',7X,A7 3 ,/,4X,'======== ==============') 305 FORMAT (' ' 1 ,/,4X,' FAILURE WALL CLOCK TBF CPU TBF' 2 ,/,4X,' NUMBER',7X,A7,13X,A7 3 ,/,4X,'======== ============== ==============') 310 FORMAT (' ' 1 ,/,4X,'INTERVAL NO. OF FAULTS TESTING LENGTH' 2 ,/,4X,'======== ============== ==============') 315 FORMAT (5X,I4,5X,E15.8,5X,E15.8) 320 FORMAT (5X,I4,5X,E15.8,6X,'(FAILURE-FREE)') 325 FORMAT (5X,I4,5X,E15.8,5X,E15.8,6X,'(FAILURE-FREE)') C C ********************** START OF EXECUTABLE CODE ********************** C IF (DATTYP.LE.2) THEN C EITHER THE WC OR CPU TBF LISTING IS DESIRED. WRITE ( *,300) UNITS(PRC(DATTYP,3)) WRITE (HIST,300) UNITS(PRC(DATTYP,3)) IF (DATTYP.EQ.1) THEN J = 1 K = PRC(1,1) - 1 ELSE J = STR2 K = END1 + PRC(2,1) - 1 ENDIF L = 0 IF (K.GE.J) THEN DO 1000 I = J, K L = L + 1 WRITE ( *,315) L, DAT(I) WRITE (HIST,315) L, DAT(I) 1000 CONTINUE C ENDDO ENDIF L = L + 1 K = K + 1 IF (PRC(DATTYP,2).EQ.0) THEN C THE LAST ENTRY IS NOT A TBF YET. WRITE ( *,320) L, DAT(K) WRITE (HIST,320) L, DAT(K) ELSE WRITE ( *,315) L, DAT(K) WRITE (HIST,315) L, DAT(K) ENDIF ELSEIF (DATTYP.EQ.3) THEN C BOTH THE WC AND CPU TBF LISTINGS ARE DESIRED. WRITE ( *,305) UNITS(PRC(1,3)), UNITS(PRC(2,3)) WRITE (HIST,305) UNITS(PRC(1,3)), UNITS(PRC(2,3)) J = 1 K = PRC(1,1) - 1 L = END1 M = 0 IF (K.GE.J) THEN DO 1025 I = J, K L = L + 1 M = M + 1 WRITE ( *,315) M, DAT(I), DAT(L) WRITE (HIST,315) M, DAT(I), DAT(L) 1025 CONTINUE C ENDDO ENDIF K = K + 1 L = L + 1 M = M + 1 IF (PRC(1,2).EQ.0) THEN C THE LAST ENTRIES ARE NOT TBFS YET. WRITE ( *,325) M, DAT(K), DAT(L) WRITE (HIST,325) M, DAT(K), DAT(L) ELSE WRITE ( *,315) M, DAT(K), DAT(L) WRITE (HIST,315) M, DAT(K), DAT(L) ENDIF ELSE C INTERVAL OUTPUT MUST BE DESIRED. WRITE ( *,310) WRITE (HIST,310) J = 1 K = PRC(3,1) L = END1 M = 0 DO 1050 I = J, K L = L + 1 M = M + 1 WRITE ( *,315) M, DAT(I), DAT(L) WRITE (HIST,315) M, DAT(I), DAT(L) 1050 CONTINUE C ENDDO ENDIF RETURN END SUBROUTINE EDTDRV C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE EDTDRV C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO PERFORM USER PRINTING AND EDITING OF A SPECIFIED SET OF DATA C WITHIN THE DATA VECTOR. C DESCRIPTION C THE ROUTINE ALLOWS THE USER TO MODIFY THE DATA VIA INSERTION, C DELETION, COMBINATION, AND ELEMENT ALTERATION. ADDITIONALLY, C THE FATALITY FLAG OF THE LAST STORED EXECUTION TIME ENTRY CAN C BE CHANGED. C C THE DATA MANIPULATIONS WILL BE PERFORMED IN A SMFLIB ROUTINE. C THE PORTIONS ARE VERY SIMPLISTIC; BUT EACH IS AN INTEGRAL PART C OF ANY SOFTWARE RELIABILITY STUDY AND; THEREFORE, HAVE BEEN C ADDED TO THE LIBRARY. C C AFTER DATA EDITING IS COMPLETED THE USER WILL BE GIVEN THE OP- C PORTUNITY TO REPLACE THE DATA BASE FILE(S), PROVIDED THE UPDATE C FLAG INDICATES THAT THE UPDATE FILES WERE GENERATED. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C END1 (I) = INDEX TO END OF FIRST SET OF DATA C END2 (I) = INDEX TO END OF SECOND SET OF DATA C STR2 (I) = INDEX TO BEGINNING OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C DATTYP (I) = FLAG INDICATING THE DATA TYPE BEING ANALYZED C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C TYPES (C) = DATA TYPE LABELS C UPDFLG (I) = FLAG TO CONTROL FILE DATA INPUT AND UPDATE C BOTH C DAT (R) = ARRAY TO HOLD OBSERVED DATA OF SIZE END2 C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C ADA (R) = ALTERATION DATA ARRAY C ASZ (I) = NUMBER OF INSERTIONS FOR SAMPLES 1 & 2 C CHG (I) = VECTOR INDICATING DATA TYPE(S) EDITED C DP1 (I) = DATA POINTER FOR SAMPLE 1 C DP2 (I) = DATA POINTER FOR SAMPLE 2 C ERRFLG (I) = ERROR FLAG C FLAG (I) = OPTION FLAG C OSZ (I) = OLD NUMBER OF ASSIGNED ELEMENTS C PC (I) = PROCESSING VECTOR FOR SMFEDT ROUTINE C USZ (I) = USED (ASSIGNED) LOCATIONS IN SAMPLE 1 & 2 C ERRORS C "THE EDIT EXCEEDS BOUNDS OF THE CURRENT DATA" C "THE INSERTION WILL EXCEED THE MAXIMUM ARRAY SIZE FOR SMERFS." C "THIS OPTION IS NOT APPLICABLE FOR INTERVAL DATA" C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END1 PARAMETER (END1 = 1000) INTEGER END2 PARAMETER (END2 = 2000) INTEGER STR2 PARAMETER (STR2 = 1001) C C GLOBAL SPECIFICATIONS C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C /LBLCOM/ DATA TYPES AND TBF UNITS LABELS COMMON COMMON /LBLCOM/ TYPES(3) ,UNITS(7) CHARACTER* 7 UNITS CHARACTER*10 TYPES C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER ASZ ,CHG(4) ,DP1 1 ,DP2 ,ERRFLG ,FLAG 2 ,I ,J ,OSZ 3 ,PC(4) ,USZ DIMENSION ADA(2,10) C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 305 FORMAT (' ' 1 ,/,' ENTER EDIT OPTION, OR ZERO FOR A LIST.') 310 FORMAT (' THE AVAILABLE EDIT OPTIONS ARE:' 1 ,/,' 1 CHANGE SPECIFIED ELEMENT' 2 ,/,' 2 DELETE SPECIFIED ELEMENT(S)' 3 ,/,' 3 INSERT UP TO 10 ELEMENTS' 4 ,/,' 4 COMBINE TWO OR MORE ADJACENT ELEMENTS' 5 ,/,' 5 CHANGE THE TBF FATALITY FLAG' 6 ,/,' 6 LIST THE CURRENT DATA' 7 ,/,' 7 RETURN TO THE MAIN PROGRAM' 8 ,/,' ENTER EDIT OPTION.') 315 FORMAT (' ENTER LOCATION NUMBER AND NEW VALUE FOR DATA 1.') 320 FORMAT (' ENTER NEW VALUE FOR DATA 2.') 325 FORMAT (' ENTER STARTING AND ENDING LOCATIONS TO DELETE.') 330 FORMAT (' ENTER LOCATION NUMBER JUST PRIOR TO THE INSERTION' 1 ,' AND NUMBER OF' 2 ,/,' NEW ENTRIES.') 335 FORMAT (' ENTER',I2,' ELEMENT(S) FOR DATA 1.') 340 FORMAT (' AND ',I2,' ELEMENT(S) FOR DATA 2.') 345 FORMAT (' ENTER STARTING AND ENDING LOCATIONS TO MERGE.') 350 FORMAT (' ENSURE THE TBF FATALITY FLAG IS PROPERLY SET.') 355 FORMAT (' **THE EDIT EXCEEDS BOUNDS OF THE CURRENT DATA.') 360 FORMAT (' **THE INSERTION WILL EXCEED THE MAXIMUM ARRAY SIZE ' 1 ,'FOR SMERFS.') 365 FORMAT (' THE FATALITY FLAG HAS BEEN SET TO INDICATE A FAI' 1 ,'LURE OCCURRED' 2 ,/,' AT THE END OF THE TESTING.') 366 FORMAT (' THE FATALITY FLAG FOR THE LAST DATA POINT HAS BEE' 1 ,'N SET TO INDI-' 2 ,/,' CATE THAT A FAILURE OCCURRED FOR THE PREVIOUS DAT' 3 ,'A POINT.') 370 FORMAT (' **THIS OPTION IS NOT APPLICABLE FOR INTERVAL DATA.') 375 FORMAT (' ' 1 ,/,' ENTER ONE TO SAVE THE NEW',A10,'DATA; ELSE ZERO.') C C ********************** START OF EXECUTABLE CODE ********************** C C SET THE ELEMENTS OF CHG TO INDICATE THAT NO EDITING HAS BEEN C PERFORMED. DO 1000 I = 1, 4 CHG(I) = 0 1000 CONTINUE C ENDDO C C DOWHILE (EDIT SELECTION .NE. RETURN) 1025 WRITE ( *,305) WRITE (HIST,305) READ ( *, *) FLAG WRITE (HIST, *) FLAG IF ((FLAG.LT.1) .OR. (FLAG.GT.7)) THEN WRITE ( *,310) WRITE (HIST,310) READ ( *, *) FLAG WRITE (HIST, *) FLAG ENDIF IF ((FLAG.LT.1) .OR. (FLAG.GT.6)) GO TO 1050 C PROVIDED THIS IS ACTUALLY A DATA EDIT, PERFORM THE INITIAL C SMFEDT ARGUMENT ASSIGNMENTS. IF (FLAG.LE.4) THEN C SET THE ARGUMENTS TO THEIR MOST COMMON VALUES. PC(1) = FLAG PC(2) = 1 PC(4) = 0 DP1 = 1 DP2 = STR2 USZ = PRC(1,1) ASZ = 10 C NOW UPDATE THESE ARGUMENTS, AS NECESSARY. IF (DATTYP.EQ.2) THEN DP1 = STR2 DP2 = 1 USZ = PRC(2,1) ELSEIF (DATTYP.EQ.3) THEN PC(2) = 2 ELSEIF (DATTYP.EQ.4) THEN PC(2) = 2 USZ = PRC(3,1) ENDIF C STORE THE NUMBER OF CURRENTLY USED ELEMENTS. OSZ = USZ C C WITH THE INITIAL DATA ITEMS SET, THE ACTUAL DATA ALTER- C ATION VALUES WILL NOW BE PROMPT AND INPUT. IF (FLAG.EQ.1) THEN C ELEMENT CHANGE WRITE ( *,315) WRITE (HIST,315) READ ( *, *) PC(3), ADA(1,1) WRITE (HIST, *) PC(3), ADA(1,1) IF (PC(2).EQ.2) THEN WRITE ( *,320) WRITE (HIST,320) READ ( *, *) ADA(2,1) WRITE (HIST, *) ADA(2,1) ENDIF C ELSEIF (FLAG.EQ.2) THEN C ELEMENT(S) DELETE WRITE ( *,325) WRITE (HIST,325) READ ( *, *) PC(3), PC(4) WRITE (HIST, *) PC(3), PC(4) C ELSEIF (FLAG.EQ.3) THEN C ELEMENT(S) INSERT WRITE ( *,330) WRITE (HIST,330) READ ( *, *) PC(3), PC(4) WRITE (HIST, *) PC(3), PC(4) I = PC(4) WRITE ( *,335) I WRITE (HIST,335) I READ ( *, *) (ADA(1,J), J = 1, I) WRITE (HIST, *) (ADA(1,J), J = 1, I) IF (PC(2).EQ.2) THEN WRITE ( *,340) I WRITE (HIST,340) I READ ( *, *) (ADA(2,J), J = 1, I) WRITE (HIST, *) (ADA(2,J), J = 1, I) ENDIF C ELSE C ELEMENTS MERGE WRITE ( *,345) WRITE (HIST,345) READ ( *, *) PC(3), PC(4) WRITE (HIST, *) PC(3), PC(4) ENDIF C C USING THE SMFEDT ROUTINE, UPDATE THE VECTOR(S). CALL SMFEDT G (PC , ADA , ASZ , END1 B ,DAT(DP1), DAT(DP2), USZ Y ,ERRFLG ) IF (ERRFLG.EQ.0) THEN C ISSUE THE TBF FATALITY FLAG WARNING MESSAGE, IF THE C EDIT TYPE WAS NOT FOR INTERVAL DATA AND THE LAST C ELEMENT OF THE DATA VECTOR WAS EDITED. IF ((DATTYP.NE.4) .AND. 1 ((((FLAG.EQ.1) .OR. (FLAG.EQ.3)) .AND. 2 (PC(3).EQ.OSZ)) .OR. 3 (((FLAG.EQ.2) .OR. (FLAG.EQ.4)) .AND. 4 (PC(4).EQ.OSZ)))) THEN WRITE ( *,350) WRITE (HIST,350) ENDIF C C SET THE VECTOR ELEMENT TO INDICATE THE TYPE EDITED. CHG(DATTYP) = 1 C C UPDATE THE PROCESSING TABLE TO THE NEW NUMBER OF C ENTRIES (RETURNED IN USZ). IF (DATTYP.LE.2) THEN PRC(DATTYP,1) = USZ ELSEIF (DATTYP.EQ.3) THEN PRC(1,1) = USZ PRC(2,1) = USZ ELSE PRC(3,1) = USZ ENDIF ELSE C AN ERROR TERMINATED THE SPECIFIED DATA EDIT AND NO C EDITING WAS PERFORMED; OUTPUT AN ERROR MESSAGE IN- C DICATING THE ERROR TYPE. IF (ERRFLG.EQ.1) THEN WRITE ( *,355) WRITE (HIST,355) ELSEIF (ERRFLG.EQ.2) THEN WRITE ( *,360) WRITE (HIST,360) ENDIF ENDIF ELSEIF (FLAG.EQ.5) THEN IF (DATTYP.LE.3) THEN IF ((DATTYP.EQ.1) .OR. (DATTYP.EQ.3)) THEN C ALTER THE WC TBF FATALITY FLAG. PRC(1,2) = 1 - PRC(1,2) I = PRC(1,2) ENDIF IF ((DATTYP.EQ.2) .OR. (DATTYP.EQ.3)) THEN C ALTER THE CPU TBF FATALITY FLAG. PRC(2,2) = 1 - PRC(2,2) I = PRC(2,2) ENDIF C OUTPUT THE MESSAGE THAT THE CHANGE HAS OCCURRED AND C SET THE CHG ELEMENT TO INDICATE THE TYPE EDITED. IF (I.EQ.1) THEN WRITE ( *,365) WRITE (HIST,365) ELSE WRITE ( *,366) WRITE (HIST,366) ENDIF CHG(DATTYP) = 1 ELSE WRITE ( *,370) WRITE (HIST,370) ENDIF ELSE C A DATA LISTING MUST BE DESIRED. CALL DATLST ENDIF GO TO 1025 1050 CONTINUE C ENDWHILE C IF (UPDFLG.EQ.1) THEN C PREPARE FOR THE DATA BASE UPDATE PROMPTS. IF (CHG(3).EQ.1) THEN CHG(1) = 1 CHG(2) = 1 ENDIF CHG(3) = CHG(4) DO 1075 I = 1, 3 IF (CHG(I).EQ.1) THEN C THE DATA WERE CHANGED FOR THIS TYPE. WRITE ( *,375) TYPES(I) WRITE (HIST,375) TYPES(I) READ ( *, *) FLAG WRITE (HIST, *) FLAG IF (FLAG.EQ.1) THEN C OUTPUT THE DATA IN THE NEW SMERFS5 FORMAT. J = I + 13 CALL OUTPRM G (I , J ) ENDIF ENDIF 1075 CONTINUE C ENDDO ENDIF RETURN END SUBROUTINE EXVBAM G (FLAG , NS , CDAT Y ,MDAT , FDAT ) C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE EXVBAM C G (FLAG , NS , CDAT C Y ,MDAT , FDAT ) C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO CREATE THE EXTRA TWO DATA VECTORS (FDAT & MDAT) REQUIRED IN C THE BROOKS AND MOTLEY DISCRETE SOFTWARE RELIABILITY MODEL. THE C 2 VECTORS (PASSED THROUGH THE CALL LINE OF THE EXVBAM ROUTINE) C CONTAIN THE INTERVAL INFORMATION ON THE FRACTIONAL PART OF THE C CODE BEING TESTED AND THE CUMULATIVE NUMBER OF FAULTS DETECTED C (IN PREVIOUS TESTING PERIODS) FOR THAT FRACTIONAL PART OF THE C PROGRAM. C DESCRIPTION C THE FIRST ARGUMENT OF THE CALL LINE (FLAG) INDICATES WHETHER C THE TESTING WAS CONDUCTED OVER A FRACTION OF THE CODE (FLAG=1) C OR THE ENTIRE PROGRAM (FLAG=0). C C IF FLAG IS SET TO ZERO, THE ROUTINE INTERNALLY COMPUTES THE RE- C QUIRED MDAT VALUES AND ASSIGNS A 1.0 TO ALL NS ELEMENTS OF FDAT C (TO INDICATE THAT THE ENTIRE PROGRAM WAS UNDER TEST). OTHERWISE C (IF FLAG IS SET TO 1), THE ROUTINE WILL PROMPT THE USER TO IN- C PUT THE TWO VALUES (FOR ALL NS ELEMENTS OF FDAT AND MDAT). C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C (NONE) C GLOBAL GLOSSARY C GIVEN C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C ARGUMENT LIST C GIVEN C CDAT (R) = INTERVAL FAULT COUNT DATA VECTOR C FLAG (I) = FLAG INDICATING FRACTIONAL OR TOTAL PROGRAM C TESTING C NS (I) = SIZE OF CDAT, FDAT, AND MDAT C YIELDED C FDAT (R) = FRACTIONAL PART OF CODE TEST DATA VECTOR C MDAT (R) = PREVIOUS CUMULATIVE FAULT DATA VECTOR C LOCAL GLOSSARY C (NONE) C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS C (NONE) C C GLOBAL SPECIFICATIONS C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS INTEGER FLAG ,NS DIMENSION CDAT(NS) ,FDAT(NS) ,MDAT(NS) C C LOCAL SPECIFICATIONS INTEGER I ,J C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 300 FORMAT (' ' 1 ,/,' ENTER FRACTION OF CODE BEING TESTED IN PERIOD 1' 2 ,'.') 305 FORMAT (' ENTER FRACTION OF CODE BEING TESTED IN PERIOD',I4 1 ,' AND THE NUM-' 2 ,/,' BER OF FAULTS DETECTED IN THE FRACTIONAL PART I' 3 ,'N THE PREVIOUS' 4 ,/,2X,I4,' TEST PERIODS.') C C ********************** START OF EXECUTABLE CODE ********************** C C ASSIGN THE FDAT VALUE FOR THE FIRST TESTING PERIOD. THIS VALUE C WILL EITHER BE SET OR INPUT, DEPENDING ON THE VALUE OF FLAG. IF (FLAG.EQ.0) THEN FDAT(1) = 1.0 ELSE WRITE ( *,300) WRITE (HIST,300) READ ( *, *) FDAT(1) WRITE (HIST, *) FDAT(1) ENDIF C C ASSIGN THE MDAT VALUE FOR THE FIRST TESTING PERIOD. MDAT(1) = 0.0 C C ASSIGN THE REMAINING ELEMENTS OF FDAT AND MDAT. DO 1000 I = 2, NS J = I - 1 IF (FLAG.EQ.0) THEN FDAT(I) = 1.0 MDAT(I) = MDAT(J) + CDAT(J) ELSE WRITE ( *,305) I, J WRITE (HIST,305) I, J READ ( *, *) FDAT(I), MDAT(I) WRITE (HIST, *) FDAT(I), MDAT(I) ENDIF 1000 CONTINUE C ENDDO RETURN END SUBROUTINE EXVGPO G (CDAT , NS , FLAG Y ,MDAT , LCOR ) C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE EXVGPO C G (CDAT , NS , FLAG C Y ,MDAT , LCOR ) C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO CREATE THE EXTRA DATA VECTOR (MDAT) AND THE EXTRA VARIABLE C (LCOR) REQUIRED IN THE GENERALIZED POISSON MODEL. THE MDAT VEC- C TOR CONTAINS THE INTERVAL INFORMATION ON THE CUMULATIVE NUMBER C OF FAULTS CORRECTED IN PREVIOUS TESTING PERIODS, AND LCOR CON- C TAINS THE NUMBER OF CORRECTIONS MADE AFTER THE LAST PERIOD. C DESCRIPTION C THE THIRD ARGUMENT OF THE CALL LINE (FLAG) INDICATES WHETHER OR C NOT ANY OF THE FAULTS DETECTED IN ONE TESTING PERIOD WERE COR- C RECTED IN A SUBSEQUENT PERIOD. C C IF FLAG IS SET TO ZERO (INDICATING ALL FAULT CORRECTIONS WERE C PERFORMED DIRECTLY FOLLOWING THE TESTING PERIOD IN WHICH THEY C WERE DETECTED) THE ROUTINE WILL INTERNALLY TRANSFER THE DATA C FROM THE CDAT VECTOR TO THE MDAT VECTOR. OTHERWISE (IF FLAG IS C SET TO 1), THE ROUTINE WILL PROMPT THE USER FOR THE NUMBER OF C CORRECTIONS FOR EACH TESTING PERIOD. C C LCOR WILL BE SET TO CONTAIN THE NUMBER OF FAULTS CORRECTED AT C THE END OF THE LAST TESTING PERIOD. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C (NONE) C GLOBAL GLOSSARY C (NONE) C ARGUMENT LIST C GIVEN C CDAT (R) = INTERVAL FAULT COUNT DATA VECTOR C FLAG (I) = FLAG INDICATING JOINT FAULT DETECTIONS AND C CORRECTIONS C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C NS (I) = SIZE OF CDAT C YIELDED C LCOR (R) = FAULT CORRECTIONS AFTER LAST PERIOD C MDAT (R) = CUMULATIVE FAULT CORRECTIONS DATA VECTOR C LOCAL GLOSSARY C (NONE) C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS C (NONE) C C GLOBAL SPECIFICATIONS C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS INTEGER FLAG ,NS DIMENSION CDAT(NS) ,MDAT(NS) C C LOCAL SPECIFICATIONS INTEGER I ,J C C ********************* START OF FORMAT STATEMENTS ********************* C C OUTPUT FORMATS 300 FORMAT (' ENTER NUMBER CORRECTED AT THE END OF PERIOD',I4 1 ,'.') C C ********************** START OF EXECUTABLE CODE ********************** C C ASSIGN MDAT VALUE FOR THE FIRST TESTING PERIOD. MDAT(1) = 0.0 C C ASSIGN THE REMAINING ELEMENTS OF MDAT. DO 1000 I = 2, NS J = I - 1 IF (FLAG.EQ.0) THEN MDAT(I) = MDAT(J) + CDAT(J) ELSE WRITE ( *,300) J WRITE (HIST,300) J READ ( *, *) TMP WRITE (HIST, *) TMP MDAT(I) = MDAT(J) + TMP ENDIF 1000 CONTINUE C ENDDO C C ASSIGN THE NUMBER OF FAULTS CORRECTED AFTER THE LAST PERIOD. LCOR = CDAT(NS) IF (FLAG.EQ.1) THEN WRITE ( *,300) NS WRITE (HIST,300) NS READ ( *, *) LCOR WRITE (HIST, *) LCOR ENDIF RETURN END SUBROUTINE FILCLS C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE FILCLS C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO CLOSE ALL OPENED FILES IN PREPARATION FOR TERMINATION. C DESCRIPTION C THIS ROUTINE SIMPLY CLOSES ALL THE FILES WHICH ARE OPENED. C ASSUMPTIONS C (NONE) C RESTRICTIONS C (NONE) C PARAMETER GLOSSARY C END2 (I) = INDEX TO END OF SECOND SET OF DATA C GLOBAL GLOSSARY C GIVEN C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C MAKFIL (I) = FLAG TO CONTROL OPTIONAL PLOT FILE CREATION C PLOT (I) = UNIT NUMBER FOR THE PLOT FILE C PRC (I) = DOUBLE DIMENSION ARRAY TO HOLD DATA INDICES C TMPB (I) = UNIT NUMBER FOR THE TMP BINARY STORAGE FILE C UPDFLG (I) = FLAG TO CONTROL FILE DATA INPUT AND UPDATE C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C (NONE) C ERRORS C (NONE) C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS INTEGER END2 PARAMETER (END2 = 2000) C C GLOBAL SPECIFICATIONS C C /DATCOM/ DATA AND PROCESSING COMMON COMMON /DATCOM/ DAT(END2) ,DATTYP ,PRC(3,3) 1 ,UPDFLG INTEGER DATTYP ,PRC ,UPDFLG C C /PLTCOM/ PLOTTING COMMON COMMON /PLTCOM/ MAKFIL ,PLTTYP INTEGER MAKFIL ,PLTTYP C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS INTEGER I ,J C C ********************* START OF FORMAT STATEMENTS ********************* C C (NONE) C C ********************** START OF EXECUTABLE CODE ********************** C C "CLOSE" THE POSSIBLY OPENED INPUT AND OUTPUT FILES. DO 1000 I = 1, 3 IF ((UPDFLG.EQ.1) .AND. (PRC(I,1).NE.0)) THEN J = I + 13 CLOSE (J) ENDIF 1000 CONTINUE C ENDDO C CLOSE (HIST) CLOSE (TMPB) C IF (MAKFIL.EQ.1) THEN CLOSE (PLOT) ENDIF RETURN END SUBROUTINE FILOPN C C *************************************************************** C * UNCLASSIFIED * C *************************************************************** C C CALLING SEQUENCE C SUBROUTINE FILOPN C C AUTHOR C OLIVER D. SMITH (EG&G WASC) C CODE READ BY C WILLIAM H. FARR (B10, NSWCDD) C PURPOSE C TO OPEN THE SPECIAL OUTPUT AND SUPPORT FILES FOR THE PROGRAM. C DESCRIPTION C THIS ROUTINE OPENS TWO OPTIONAL AND ONE REQUIRED DATA FILES FOR C THE SMERFS PROGRAM. (THE PROMPTING FOR FILE NAMES IS REPEATED C UNTIL THE ENTERED VALUE IS DETERMINED TO BE ACCEPTABLE FOR THE C UTILIZED COMPUTER SYSTEM.) A DESCRIPTION OF EACH FILE FOLLOWS. C C THE SMERFS HISTORY FILE IS THE FIRST OPTIONAL OUTPUT FILE. THIS C FILE CONTAINS A COPY OF THE ENTIRE INTERACTIVE SESSION. IF THE C FILE IS CREATED, A FILE OF THE PROGRAM PROMPTS, USER RESPONSES, C AND PROGRAM OUTPUTS WILL BE AVAILABLE WHEN THE PROGRAM ENDS. C C THE SMERFS PLOT FILE IS THE SECOND OPTIONAL OUTPUT FILE. THIS C FILE CONTAINS THE DATA VALUES (SPECIFIED BY THE USER) TO CREATE C CREATE HIGH-QUALITY PLOTS OF THE (1) RAW DATA, (2) SMOOTHED RAW C DATA, (3) PREDICTION DATA, (4) RESIDUAL DATA, AND (5) SMOOTHED C RESIDUAL DATA. THE DATA FILE WILL ALSO CONTAIN VARIOUS TITLES C AND AXIS LABELS. C C THE FINAL FILE IS SIMPLY AN INTERNAL UNFORMATTED STORAGE FILE. C ASSUMPTIONS C (NONE) C RESTRICTIONS C THIS SUBPROGRAM CONTAINS CODE WHICH DOES NOT COMPLY WITH THE C PROGRAMMING STANDARDS; GROUP LEADER APPROVAL HAS BEEN OBTAINED. C -SPECIFICALLY: C THE DOWHILES CONTAIN NON-STRUCTURED LOOP-BACKS AND BRANCHES. C PARAMETER GLOSSARY C (NONE) C GLOBAL GLOSSARY C GIVEN C HIST (I) = UNIT NUMBER FOR THE HISTORY FILE C PLOT (I) = UNIT NUMBER FOR THE PLOT FILE C TMPB (I) = UNIT NUMBER FOR THE TMP BINARY STORAGE FILE C YIELDED C MAKFIL (I) = FLAG TO CONTROL OPTIONAL PLOT FILE CREATION C ARGUMENT LIST C (NONE) C LOCAL GLOSSARY C FILNM (C) = INPUT FILE NAME OF FILE TO BE OPENED C ERRORS C "FILE NAME ERROR; TRY AGAIN (AFTER THE PROMPT)." C ASSOCIATED SUBPROGRAMS C SEE AUTOMATED CODE EXAMINER (ACE) OUTPUT C REFERENCES C SEE PROLOGUE OF MAIN PROGRAM C LANGUAGE C FORTRAN 77 C C *********************** START OF DECLARATIONS ************************ C C PRE-DECLARATION DEFAULT ASSIGNMENT IMPLICIT DOUBLE PRECISION (A-Z) C C PARAMETER SPECIFICATIONS C (NONE) C C GLOBAL SPECIFICATIONS C C /PLTCOM/ PLOTTING COMMON COMMON /PLTCOM/ MAKFIL ,PLTTYP INTEGER MAKFIL ,PLTTYP C C /UNTCOM/ UNIT NUMBER - NAME COMMON COMMON /UNTCOM/ HIST ,PLOT ,TMPB INTEGER HIST ,PLOT ,TMPB C C ARGUMENT SPECIFICATIONS C (NONE) C C LOCAL SPECIFICATIONS CHARACTER*50 FILNM C C ********************* START OF FORMAT STATEMENTS ********************* C C INPUT FORMATS 100 FORMAT (A50) C C OUTPUT FORMATS 300 FORMAT (' ' 1 ,/,9X 2 ,'SSSSSSS M M EEEEEEE RRRRRRR FFFFFFF SSSSSSS' 3 ,/,9X 4 ,'S M M M M E R R F S' 5 ,/,9X 6 ,'SSSSSSS M M M EEEE RRRRRRR FFFF SSSSSSS' 7 ,/,9X 8 ,' S M M E R R F S' 9 ,/,9X A ,'SSSSSSS M M EEEEEEE R R F SSSSSSS' B ,//,11X C ,'SOFTWARE REVISION NUMBER FIVE (21 SEPTEMBER 1993)' D ,/) 305 FORMAT (' ' 1 ,/,' ENTER OUTPUT FILE NAME FOR THE HISTORY FILE; ZERO ' 2 ,'IF THE FILE IS' 3 ,/,' NOT DESIRED, OR ONE FOR DETAILS ON THE FILE.') 310 FORMAT (' ' 1 ,/,' THE HISTORY FILE IS A COPY OF THE ENTIRE INTERACTI' 2 ,'VE SESSION. IT' 3 ,/,' CAN BE USED FOR LATER ANALYSIS AND/OR DOCUMENTATIO' 4 ,'N.') 315 FORMAT (' **FILE NAME ERROR; TRY AGAIN (AFTER THE PROMPT).') 320 FORMAT (' ' 1 ,/,' ENTER OUTPUT FILE NAME FOR THE PLOT FILE; ZERO ' 2 ,'IF THE FILE IS' 3 ,/,' NOT DESIRED, OR ONE FOR DETAILS ON THE FILE.') 325 FORMAT (' ' 1 ,/,' THE PLOT FILE CONTAINS SELECTED DATA AND LABELS TO' 2 ,' ALLOW A USER-' 3 ,/,' SUPPLIED GRAPHICS PROGRAM TO GENERATE HIGH-QUALITY' 4 ,' PLOTS. SINCE' 5 ,/,' A CHARACTER PLOTTER IS IMPLEMENTED WITHIN THE SMER' 6 ,'FS PROGRAM (TO' 7 ,/,' ENSURE MACHINE PORTABILITY OF THE PACKAGE), THE U' 8 ,'SE OF THIS OP-' 9 ,/,' TION IS HIGHLY RECOMMENDED.') C C ********************** START OF EXECUTABLE CODE ********************** C C ESTABLISH THE SMERFS HISTORY FILE. ONCE ESTABLISHED SCRIPT THE C PROGRAM PROMPTS AND FINAL USER RESPONSE TO THAT FILE. WRITE ( *,300) C DOWHILE (ERROR ON INPUT) <