PROGRAM FM257 C C C C THIS ROUTINE IS A TEST OF THE PAUSE AND STOP STATEMENTS. THESE C STATEMENTS CAN NOW BE FOLLOWED BY A STRING OF NOT MORE THAN FIVE C DIGITS, OR A CHARACTER CONSTANT. C C REFERENCES C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 11.12, STOP STATEMENT C SECTION 11.13, PAUSE STATEMENT C C FM015 - TESTS THE STOP AND PAUSE STATEMENTS USING AN OCTAL C DIGIT STRING OF LENGTH FROM ONE TO FIVE. C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C C C C INITIALIZATION SECTION. C C INITIALIZE CONSTANTS C ******************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS = 0 IVFAIL = 0 IVDELE = 0 ICZERO = 0 C C WRITE OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C THE FOLLOWING SERIES OF TESTS CHECK THE VARIOUS FORMS OF THE C PAUSE STATEMENT. IN EACH CASE THE WORD PAUSE (FOLLOWED BY A C STRING OF CHARACTERS AS NOTED IN EACH TEST DESCRIPTION), SHOULD BE C DISPLAYED ON THE OPERATORS CONSOLE. FOR EACH TEST THE OPERATOR C NEED ONLY DO WHATEVER IS NESSARY TO TELL THE SYSTEM TO CONTINUE C THE EXECUTION OF THE ROUTINE. THE STRING FORMS ARE AS DESCRIBED C IN SECTION 11.13. C C C C **** FCVS PROGRAM 257 - TEST 001 **** C C TEST 001 CHECKS THE PAUSE STATEMENT THAT IS NOT FOLLOWED BY C A STRING OF ANYTHING EXCEPT BLANKS. ONLY THE WORD PAUSE SHOULD C BE DISPLAYED. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE PAUSE C C ***** THESE CARDS INITIALIZE IVCOMP AND IVCORR FOR THE NEXT C FIVE TESTS EVEN THOUGH THEY ONLY APPEAR IN THE FAIL CODE C OF THE BOILERPLATE.***** IVCOMP = 1 IVCORR = 1 C C 40010 IF ( ICZERO ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 257 - TEST 002 **** C C TEST 002 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A SINGLE C CHARACTER ZERO (0). C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE PAUSE 0 40020 IF ( ICZERO ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 257 - TEST 003 **** C C TEST 003 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A STRING OF C FIVE ZEROS (00000). C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE PAUSE 00000 40030 IF ( ICZERO ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 257 - TEST 004 **** C C TEST 004 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING C OF FIVE CHARACTERS 19283. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE PAUSE 19283 40040 IF ( ICZERO ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 257 - TEST 005 **** C C TEST 005 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING C OF FOUR NINES (9999). C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE PAUSE 9999 40050 IF ( ICZERO ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 257 - TEST 006 **** C C TEST 006 IS FOR THE STOP STATEMENT - SECTION 11.12. C SINCE THE STOP STATEMENT CAN ONLY BE EXECUTED ONCE IN A PROGRAM C UNIT, VARIOUS FORMATS OF THE STOP STATEMENT WILL BE CHECKED FOR C SYNTAX ONLY BY THE USE OF A COMPUTED GO TO STATEMENT. C C ONCE THE STOP STATEMENT HAS BEEN EXECUTED, THEN THE ROUTINE C FM257 SHOULD NO LONGER EXECUTE. ANY CONTINUATION IS CONSIDERED AS C A FAILURE OF THIS TEST. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVON01 = 6 GO TO ( 0062, 0063, 0064, 0065, 0066, 0067, 40060 ), IVON01 C 0062 STOP 0 0063 STOP 00000 0064 STOP 12345 0065 STOP 9999 0066 STOP 'IMA 1' 0067 STOP 'P ASS' C C **** THE TEST FAILS IF IT GOES BEYOND THE STOP STATEMENTS **** C 40060 IF ( ICZERO ) 10060, 20060, 10060 C ***** NOTE THAT THE NORMAL PASS-10060 AND FAIL-20060 LABELS C ARE REVERSED BECAUSE IF THE LOGIC EXECUTES THIS STATEMENT C THEN THE STOP STATEMENT FAILS TO EXECUTE CORRECTLY. ***** 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM257) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM257) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END