FM257.f Source File


Contents

Source Code


Source Code

      PROGRAM FM257                                                     00010257
C                                                                       00020257
C                                                                       00030257
C                                                                       00040257
C        THIS ROUTINE IS A TEST OF THE PAUSE AND STOP STATEMENTS.  THESE00050257
C     STATEMENTS CAN NOW BE FOLLOWED BY A STRING OF NOT MORE THAN FIVE  00060257
C     DIGITS, OR A CHARACTER CONSTANT.                                  00070257
C                                                                       00080257
C     REFERENCES                                                        00090257
C     REFERENCES                                                        00100257
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00110257
C             X3.9-1978                                                 00120257
C        SECTION 11.12,      STOP STATEMENT                             00130257
C        SECTION 11.13,      PAUSE STATEMENT                            00140257
C                                                                       00150257
C        FM015 - TESTS THE STOP AND PAUSE STATEMENTS USING AN OCTAL     00160257
C                DIGIT STRING OF LENGTH FROM ONE TO FIVE.               00170257
C                                                                       00180257
C                                                                       00190257
C                                                                       00200257
C     ******************************************************************00210257
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00220257
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN   00230257
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE 00240257
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT       00250257
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT00260257
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS   00270257
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00280257
C     THE RESULT OF EXECUTING THESE TESTS.                              00290257
C                                                                       00300257
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES      00310257
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.                        00320257
C                                                                       00330257
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO             00340257
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00350257
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00360257
C                          BUILDING 225  RM A266                        00370257
C                         GAITHERSBURG, MD  20899                       00380257
C     ******************************************************************00390257
C                                                                       00400257
C                                                                       00410257
      IMPLICIT LOGICAL (L)                                              00420257
      IMPLICIT CHARACTER*14 (C)                                         00430257
C                                                                       00440257
C                                                                       00450257
C                                                                       00460257
C     INITIALIZATION SECTION.                                           00470257
C                                                                       00480257
C     INITIALIZE CONSTANTS                                              00490257
C     ********************                                              00500257
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER          00510257
      I01 = 5                                                           00520257
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER              00530257
      I02 = 6                                                           00540257
C     SYSTEM ENVIRONMENT SECTION                                        00550257
C                                                                       00560257
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00570257
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00580257
C     (UNIT NUMBER FOR CARD READER).                                    00590257
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00600257
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00610257
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00620257
C                                                                       00630257
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00640257
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00650257
C     (UNIT NUMBER FOR PRINTER).                                        00660257
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00670257
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00680257
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00690257
C                                                                       00700257
      IVPASS = 0                                                        00710257
      IVFAIL = 0                                                        00720257
      IVDELE = 0                                                        00730257
      ICZERO = 0                                                        00740257
C                                                                       00750257
C     WRITE OUT PAGE HEADERS                                            00760257
C                                                                       00770257
      WRITE (I02,90002)                                                 00780257
      WRITE (I02,90006)                                                 00790257
      WRITE (I02,90008)                                                 00800257
      WRITE (I02,90004)                                                 00810257
      WRITE (I02,90010)                                                 00820257
      WRITE (I02,90004)                                                 00830257
      WRITE (I02,90016)                                                 00840257
      WRITE (I02,90001)                                                 00850257
      WRITE (I02,90004)                                                 00860257
      WRITE (I02,90012)                                                 00870257
      WRITE (I02,90014)                                                 00880257
      WRITE (I02,90004)                                                 00890257
C                                                                       00900257
C                                                                       00910257
C                                                                       00920257
C        THE FOLLOWING SERIES OF TESTS CHECK THE VARIOUS FORMS OF THE   00930257
C     PAUSE STATEMENT.  IN EACH CASE THE WORD PAUSE (FOLLOWED BY A      00940257
C     STRING OF CHARACTERS AS NOTED IN EACH TEST DESCRIPTION), SHOULD BE00950257
C     DISPLAYED ON THE OPERATORS CONSOLE.  FOR EACH TEST THE OPERATOR   00960257
C     NEED ONLY DO WHATEVER IS NESSARY TO TELL THE SYSTEM TO CONTINUE   00970257
C     THE EXECUTION OF THE ROUTINE.  THE STRING FORMS ARE AS DESCRIBED  00980257
C     IN SECTION 11.13.                                                 00990257
C                                                                       01000257
C                                                                       01010257
C                                                                       01020257
C     ****  FCVS PROGRAM 257  -  TEST 001  ****                         01030257
C                                                                       01040257
C        TEST 001 CHECKS THE PAUSE STATEMENT THAT IS NOT FOLLOWED BY    01050257
C     A STRING OF ANYTHING EXCEPT BLANKS.  ONLY THE WORD PAUSE SHOULD   01060257
C     BE DISPLAYED.                                                     01070257
C                                                                       01080257
C                                                                       01090257
      IVTNUM =   1                                                      01100257
      IF (ICZERO) 30010, 0010, 30010                                    01110257
 0010 CONTINUE                                                          01120257
      PAUSE                                                             01130257
C                                                                       01140257
C     ***** THESE CARDS INITIALIZE IVCOMP AND IVCORR FOR THE NEXT       01150257
C           FIVE TESTS EVEN THOUGH THEY ONLY APPEAR IN THE FAIL CODE    01160257
C           OF THE BOILERPLATE.*****                                    01170257
      IVCOMP = 1                                                        01180257
      IVCORR = 1                                                        01190257
C                                                                       01200257
C                                                                       01210257
40010 IF ( ICZERO )  20010, 10010, 20010                                01220257
30010 IVDELE = IVDELE + 1                                               01230257
      WRITE (I02,80000) IVTNUM                                          01240257
      IF (ICZERO) 10010, 0021, 20010                                    01250257
10010 IVPASS = IVPASS + 1                                               01260257
      WRITE (I02,80002) IVTNUM                                          01270257
      GO TO 0021                                                        01280257
20010 IVFAIL = IVFAIL + 1                                               01290257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01300257
 0021 CONTINUE                                                          01310257
C                                                                       01320257
C     ****  FCVS PROGRAM 257  -  TEST 002  ****                         01330257
C                                                                       01340257
C        TEST 002 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A SINGLE    01350257
C     CHARACTER ZERO (0).                                               01360257
C                                                                       01370257
C                                                                       01380257
      IVTNUM =   2                                                      01390257
      IF (ICZERO) 30020, 0020, 30020                                    01400257
 0020 CONTINUE                                                          01410257
      PAUSE 0                                                           01420257
40020 IF ( ICZERO )  20020, 10020, 20020                                01430257
30020 IVDELE = IVDELE + 1                                               01440257
      WRITE (I02,80000) IVTNUM                                          01450257
      IF (ICZERO) 10020, 0031, 20020                                    01460257
10020 IVPASS = IVPASS + 1                                               01470257
      WRITE (I02,80002) IVTNUM                                          01480257
      GO TO 0031                                                        01490257
20020 IVFAIL = IVFAIL + 1                                               01500257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01510257
 0031 CONTINUE                                                          01520257
C                                                                       01530257
C     ****  FCVS PROGRAM 257  -  TEST 003  ****                         01540257
C                                                                       01550257
C        TEST 003 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A STRING OF 01560257
C     FIVE ZEROS (00000).                                               01570257
C                                                                       01580257
C                                                                       01590257
      IVTNUM =   3                                                      01600257
      IF (ICZERO) 30030, 0030, 30030                                    01610257
 0030 CONTINUE                                                          01620257
      PAUSE 00000                                                       01630257
40030 IF ( ICZERO )  20030, 10030, 20030                                01640257
30030 IVDELE = IVDELE + 1                                               01650257
      WRITE (I02,80000) IVTNUM                                          01660257
      IF (ICZERO) 10030, 0041, 20030                                    01670257
10030 IVPASS = IVPASS + 1                                               01680257
      WRITE (I02,80002) IVTNUM                                          01690257
      GO TO 0041                                                        01700257
20030 IVFAIL = IVFAIL + 1                                               01710257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01720257
 0041 CONTINUE                                                          01730257
C                                                                       01740257
C     ****  FCVS PROGRAM 257  -  TEST 004  ****                         01750257
C                                                                       01760257
C        TEST 004 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING  01770257
C     OF FIVE CHARACTERS  19283.                                        01780257
C                                                                       01790257
C                                                                       01800257
      IVTNUM =   4                                                      01810257
      IF (ICZERO) 30040, 0040, 30040                                    01820257
 0040 CONTINUE                                                          01830257
      PAUSE  19283                                                      01840257
40040 IF ( ICZERO )  20040, 10040, 20040                                01850257
30040 IVDELE = IVDELE + 1                                               01860257
      WRITE (I02,80000) IVTNUM                                          01870257
      IF (ICZERO) 10040, 0051, 20040                                    01880257
10040 IVPASS = IVPASS + 1                                               01890257
      WRITE (I02,80002) IVTNUM                                          01900257
      GO TO 0051                                                        01910257
20040 IVFAIL = IVFAIL + 1                                               01920257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01930257
 0051 CONTINUE                                                          01940257
C                                                                       01950257
C     ****  FCVS PROGRAM 257  -  TEST 005  ****                         01960257
C                                                                       01970257
C        TEST 005 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING  01980257
C     OF FOUR NINES  (9999).                                            01990257
C                                                                       02000257
C                                                                       02010257
      IVTNUM =   5                                                      02020257
      IF (ICZERO) 30050, 0050, 30050                                    02030257
 0050 CONTINUE                                                          02040257
      PAUSE 9999                                                        02050257
40050 IF ( ICZERO )  20050, 10050, 20050                                02060257
30050 IVDELE = IVDELE + 1                                               02070257
      WRITE (I02,80000) IVTNUM                                          02080257
      IF (ICZERO) 10050, 0061, 20050                                    02090257
10050 IVPASS = IVPASS + 1                                               02100257
      WRITE (I02,80002) IVTNUM                                          02110257
      GO TO 0061                                                        02120257
20050 IVFAIL = IVFAIL + 1                                               02130257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02140257
 0061 CONTINUE                                                          02150257
C                                                                       02160257
C     ****  FCVS PROGRAM 257  -  TEST 006  ****                         02170257
C                                                                       02180257
C        TEST 006 IS FOR THE STOP STATEMENT - SECTION 11.12.            02190257
C     SINCE THE STOP STATEMENT CAN ONLY BE EXECUTED ONCE IN A PROGRAM   02200257
C     UNIT, VARIOUS FORMATS OF THE STOP STATEMENT WILL BE CHECKED FOR   02210257
C     SYNTAX ONLY BY THE USE OF A COMPUTED GO TO STATEMENT.             02220257
C                                                                       02230257
C        ONCE THE STOP STATEMENT HAS BEEN EXECUTED, THEN THE ROUTINE    02240257
C     FM257 SHOULD NO LONGER EXECUTE.  ANY CONTINUATION IS CONSIDERED AS02250257
C     A FAILURE OF THIS TEST.                                           02260257
C                                                                       02270257
C                                                                       02280257
      IVTNUM =   6                                                      02290257
      IF (ICZERO) 30060, 0060, 30060                                    02300257
 0060 CONTINUE                                                          02310257
      IVON01 = 6                                                        02320257
      GO TO ( 0062, 0063, 0064, 0065, 0066, 0067, 40060 ), IVON01       02330257
C                                                                       02340257
 0062 STOP 0                                                            02350257
 0063 STOP 00000                                                        02360257
 0064 STOP 12345                                                        02370257
 0065 STOP 9999                                                         02380257
 0066 STOP 'IMA 1'                                                      02390257
 0067 STOP 'P ASS'                                                      02400257
C                                                                       02410257
C        **** THE TEST FAILS IF IT GOES BEYOND THE STOP STATEMENTS  ****02420257
C                                                                       02430257
40060 IF ( ICZERO )  10060, 20060, 10060                                02440257
C     ***** NOTE THAT THE NORMAL PASS-10060 AND FAIL-20060 LABELS       02450257
C           ARE REVERSED BECAUSE IF THE LOGIC EXECUTES THIS STATEMENT   02460257
C           THEN THE STOP STATEMENT FAILS TO EXECUTE CORRECTLY. *****   02470257
30060 IVDELE = IVDELE + 1                                               02480257
      WRITE (I02,80000) IVTNUM                                          02490257
      IF (ICZERO) 10060, 0071, 20060                                    02500257
10060 IVPASS = IVPASS + 1                                               02510257
      WRITE (I02,80002) IVTNUM                                          02520257
      GO TO 0071                                                        02530257
20060 IVFAIL = IVFAIL + 1                                               02540257
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02550257
 0071 CONTINUE                                                          02560257
C                                                                       02570257
C                                                                       02580257
C     WRITE OUT TEST SUMMARY                                            02590257
C                                                                       02600257
      WRITE (I02,90004)                                                 02610257
      WRITE (I02,90014)                                                 02620257
      WRITE (I02,90004)                                                 02630257
      WRITE (I02,90000)                                                 02640257
      WRITE (I02,90004)                                                 02650257
      WRITE (I02,90020) IVFAIL                                          02660257
      WRITE (I02,90022) IVPASS                                          02670257
      WRITE (I02,90024) IVDELE                                          02680257
      STOP                                                              02690257
90001 FORMAT (" ",24X,"FM257")                                          02700257
90000 FORMAT (" ",20X,"END OF PROGRAM FM257" )                          02710257
C                                                                       02720257
C     FORMATS FOR TEST DETAIL LINES                                     02730257
C                                                                       02740257
80000 FORMAT (" ",4X,I5,6X,"DELETED")                                   02750257
80002 FORMAT (" ",4X,I5,7X,"PASS")                                      02760257
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         02770257
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    02780257
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14)                        02790257
C                                                                       02800257
C     FORMAT STATEMENTS FOR PAGE HEADERS                                02810257
C                                                                       02820257
90002 FORMAT ("1")                                                      02830257
90004 FORMAT (" ")                                                      02840257
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            02850257
90008 FORMAT (" ",21X,"VERSION 2.1" )                                   02860257
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )         02870257
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT")  02880257
90014 FORMAT (" ",5X,"----------------------------------------------" ) 02890257
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             02900257
C                                                                       02910257
C     FORMAT STATEMENTS FOR RUN SUMMARY                                 02920257
C                                                                       02930257
90020 FORMAT (" ",19X,I5," TESTS FAILED" )                              02940257
90022 FORMAT (" ",19X,I5," TESTS PASSED" )                              02950257
90024 FORMAT (" ",19X,I5," TESTS DELETED" )                             02960257
      END                                                               02970257