| PROGRAM FM005 |
| |
| C COMMENT SECTION 00010005 |
| C 00020005 |
| C FM005 00030005 |
| C 00040005 |
| C THIS ROUTINE TESTS THE BASIC ASSUMPTIONS REGARDING THE SIMPLE 00050005 |
| C FORMATTED WRITE STATEMENT OF FORM 00060005 |
| C WRITE (U,F) OR 00070005 |
| C WRITE (U,F) L 00080005 |
| C WHERE U IS A LOGICAL UNIT NUMBER 00090005 |
| C F IS A FORMAT STATEMENT LABEL, AND 00100005 |
| C L IS A LIST OF INTEGER VARIABLES. 00110005 |
| C THE FORMAT STATEMENT F CONTAINS NH HOLLERITH FIELD DESCRIPTORS, 00120005 |
| C NX BLANK FIELD DESCRIPTORS AND IW NUMERIC FIELD DESCRIPTORS. 00130005 |
| C 00140005 |
| C THIS ROUTINE TESTS WHETHER THE FIRST CHARACTER OF A FORMAT 00150005 |
| C RECORD FOR PRINTER OUTPUT DETERMINES VERTICAL SPACING AS FOLLOWS 00160005 |
| C BLANK - ONE LINE 00170005 |
| C 1 - ADVANCE TO FIRST LINE OF NEXT PAGE 00180005 |
| C 00190005 |
| C REFERENCES 00200005 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00210005 |
| C X3.9-1978 00220005 |
| C 00230005 |
| C SECTION 12.8.2, INPUT/OUTPUT LISTS 00240005 |
| C SECTION 12.9.5.2, READ, WRITE, AND PRINT STATEMENT 00250005 |
| C SECTION 12.9.5.2.3, PRINTING OF FORMATTED RECORDS 00260005 |
| C SECTION 13.5.2, H EDITING 00270005 |
| C SECTION 13.5.3.2, X EDITING 00280005 |
| C SECTION 13.5.9.1, NUMERIC EDITING 00290005 |
| C 00300005 |
| C ALL OF THE RESULTS OF THIS ROUTINE MUST BE VISUALLY CHECKED 00310005 |
| C ON THE OUTPUT REPORT. THE USUAL TEST CODE FOR PASS, FAIL, OR 00320005 |
| C DELETE DOES NOT APPLY TO THIS ROUTINE. IF ANY TEST IS TO BE 00330005 |
| C DELETED, CHANGE THE OFFENDING WRITE OR FORMAT STATEMENT TO A 00340005 |
| C COMMENT. THE PERSON RESPONSIBLE FOR CHECKING THE OUTPUT MUST ALSO00350005 |
| C CHECK THE COMPILER LISTING TO SEE IF ANY STATEMENTS HAVE BEEN 00360005 |
| C CHANGED TO COMMENTS. 00370005 |
| C 00380005 |
| C ********************************************************** 00390005 |
| C 00400005 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00410005 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00420005 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00430005 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00440005 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00450005 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00460005 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00470005 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00480005 |
| C OF EXECUTING THESE TESTS. 00490005 |
| C 00500005 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00510005 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00520005 |
| C 00530005 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00540005 |
| C 00550005 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00560005 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00570005 |
| C BUILDING 225 RM A266 00580005 |
| C GAITHERSBURG, MD 20899 00590005 |
| C ********************************************************** 00600005 |
| C 00610005 |
| C 00620005 |
| C 00630005 |
| C INITIALIZATION SECTION 00640005 |
| C 00650005 |
| C INITIALIZE CONSTANTS 00660005 |
| C ************** 00670005 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00680005 |
| I01 = 5 00690005 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00700005 |
| I02 = 6 00710005 |
| C SYSTEM ENVIRONMENT SECTION 00720005 |
| C 00730005 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00740005 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00750005 |
| C (UNIT NUMBER FOR CARD READER). 00760005 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00770005 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00780005 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00790005 |
| C 00800005 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00810005 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00820005 |
| C (UNIT NUMBER FOR PRINTER). 00830005 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00840005 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00850005 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00860005 |
| C 00870005 |
| IVPASS=0 00880005 |
| IVFAIL=0 00890005 |
| IVDELE=0 00900005 |
| ICZERO=0 00910005 |
| C 00920005 |
| C WRITE PAGE HEADERS 00930005 |
| WRITE (I02,90000) 00940005 |
| WRITE (I02,90001) 00950005 |
| WRITE (I02,90002) 00960005 |
| WRITE (I02, 90002) 00970005 |
| WRITE (I02,90003) 00980005 |
| WRITE (I02,90002) 00990005 |
| WRITE (I02,90004) 01000005 |
| WRITE (I02,90002) 01010005 |
| WRITE (I02,90011) 01020005 |
| WRITE (I02,90002) 01030005 |
| WRITE (I02,90002) 01040005 |
| WRITE (I02,90006) 01050005 |
| WRITE (I02,90002) 01060005 |
| 331 CONTINUE 01070005 |
| IVTNUM = 33 01080005 |
| C 01090005 |
| C **** TEST 033 **** 01100005 |
| C TEST 33 - VERTICAL SPACING TEST 01110005 |
| C 1 IN FIRST CHARACTER OF FORMATTED PRINT RECORD MEANS 01120005 |
| C RECORD IS FIRST LINE AT TOP OF NEXT PAGE. 01130005 |
| C 01140005 |
| WRITE (I02,80001) IVTNUM 01150005 |
| WRITE (I02,80331) 01160005 |
| 80331 FORMAT (5X,"LAST LINE ON THIS PAGE" ) 01170005 |
| WRITE (I02,80330) 01180005 |
| 80330 FORMAT ("1"," THIS IS FIRST LINE ON PAGE" ) 01190005 |
| 341 CONTINUE 01200005 |
| IVTNUM = 34 01210005 |
| C 01220005 |
| C **** TEST 034 **** 01230005 |
| C TEST 34 - VERTICAL SPACING TEST 01240005 |
| C PRINT BLANK LINES 01250005 |
| C 01260005 |
| WRITE (I02,90002) 01270005 |
| WRITE (I02,80001) IVTNUM 01280005 |
| WRITE (I02,80340) 01290005 |
| 80340 FORMAT (" ", 10X) 01300005 |
| WRITE (I02,80341) 01310005 |
| 80341 FORMAT (" THERE IS ONE BLANK LINE BEFORE THIS LINE" ) 01320005 |
| WRITE (I02,80342) 01330005 |
| WRITE (I02,80342) 01340005 |
| 80342 FORMAT (" " ) 01350005 |
| WRITE (I02,80343) 01360005 |
| 80343 FORMAT (" THERE ARE TWO BLANK LINES BEFORE THIS LINE" ) 01370005 |
| WRITE (I02,80344) 01380005 |
| WRITE (I02,80344) 01390005 |
| WRITE (I02,80344) 01400005 |
| 80344 FORMAT (11X) 01410005 |
| WRITE (I02,80345) 01420005 |
| 80345 FORMAT (" THERE ARE THREE BLANK LINES BEFORE THIS LINE" ) 01430005 |
| 351 CONTINUE 01440005 |
| IVTNUM = 35 01450005 |
| C 01460005 |
| C **** TEST 035 **** 01470005 |
| C TEST 35 - PRINT 54 CHARACTERS 01480005 |
| C 01490005 |
| WRITE (I02,90002) 01500005 |
| WRITE (I02,80001)IVTNUM 01510005 |
| WRITE (I02,80351) 01520005 |
| 80351 FORMAT (" NEXT LINE CONTAINS 54 CHARACTERS" ) 01530005 |
| WRITE (I02,80350) 01540005 |
| 80350 FORMAT(" 123456789012345678901234567890123456789012345678901234" )01550005 |
| 361 CONTINUE 01560005 |
| IVTNUM = 36 01570005 |
| C 01580005 |
| C **** TEST 036 **** 01590005 |
| C TEST 36 - NUMERIC FIELD DESCRIPTOR I1 01600005 |
| C 01610005 |
| WRITE (I02,90000) 01620005 |
| WRITE (I02,90002) 01630005 |
| WRITE (I02,80001) IVTNUM 01640005 |
| WRITE (I02,80361) 01650005 |
| 80361 FORMAT (" ",10X,"THIS TEST PRINTS 3 UNDER I1 DESCRIPTOR" ) 01660005 |
| IVON01 = 3 01670005 |
| WRITE (I02,80360) IVON01 01680005 |
| 80360 FORMAT (" ",10X,I1) 01690005 |
| 371 CONTINUE 01700005 |
| IVTNUM = 37 01710005 |
| C 01720005 |
| C **** TEST 037 **** 01730005 |
| C TEST 37 - NUMERIC FIELD DESCRIPTOR I2 01740005 |
| C 01750005 |
| WRITE (I02,90002) 01760005 |
| WRITE (I02,80001) IVTNUM 01770005 |
| WRITE (I02,80371) 01780005 |
| 80371 FORMAT (11X,"THIS TEST PRINTS 15 UNDER I2 DESCRIPTOR" ) 01790005 |
| IVON01 = 15 01800005 |
| WRITE (I02,80370) IVON01 01810005 |
| 80370 FORMAT (" ",10X,I2) 01820005 |
| 381 CONTINUE 01830005 |
| IVTNUM = 38 01840005 |
| C 01850005 |
| C **** TEST 038 **** 01860005 |
| C TEST 38 - NUMERIC FIELD DESCRIPTOR I3 01870005 |
| C 01880005 |
| WRITE (I02,90002) 01890005 |
| WRITE (I02,80001) IVTNUM 01900005 |
| WRITE (I02,80381) 01910005 |
| 80381 FORMAT (11X,"THIS TEST PRINTS 291 UNDER I3 DESCRIPTOR" ) 01920005 |
| IVON01 = 291 01930005 |
| WRITE (I02,80380) IVON01 01940005 |
| 80380 FORMAT (11X,I3) 01950005 |
| 391 CONTINUE 01960005 |
| IVTNUM = 39 01970005 |
| C 01980005 |
| C **** TEST 039 **** 01990005 |
| C TEST 39 - NUMERIC FIELD DESCRIPTOR I4 02000005 |
| C 02010005 |
| WRITE (I02,90002) 02020005 |
| WRITE (I02,80001) IVTNUM 02030005 |
| WRITE (I02,80391) 02040005 |
| 80391 FORMAT (11X,"THIS TEST PRINTS 4321 UNDER I4 DESCRIPTOR" ) 02050005 |
| IVON01 = 4321 02060005 |
| WRITE (I02,80390) IVON01 02070005 |
| 80390 FORMAT (11X,I4) 02080005 |
| 401 CONTINUE 02090005 |
| IVTNUM = 40 02100005 |
| C 02110005 |
| C **** TEST 040 **** 02120005 |
| C TEST 40 - NUMERIC FIELD DESCRIPTOR I5 02130005 |
| C 02140005 |
| WRITE (I02,90002) 02150005 |
| WRITE (I02,80001) IVTNUM 02160005 |
| WRITE (I02,80401) 02170005 |
| 80401 FORMAT (" ",10X,"THIS TEST PRINTS 12345 UNDER I5 DESCRIPTOR" ) 02180005 |
| IVON01 = 12345 02190005 |
| WRITE (I02,80400) IVON01 02200005 |
| 80400 FORMAT (" ",10X,I5) 02210005 |
| 411 CONTINUE 02220005 |
| IVTNUM = 41 02230005 |
| C 02240005 |
| C **** TEST 041 **** 02250005 |
| C TEST 41 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION 02260005 |
| C 02270005 |
| IVON01 = 1 02280005 |
| IVON02 = 22 02290005 |
| IVON03 = 333 02300005 |
| IVON04 = 4444 02310005 |
| IVON05 = 25555 02320005 |
| WRITE (I02,90002) 02330005 |
| WRITE (I02,80001) IVTNUM 02340005 |
| WRITE (I02,80411) 02350005 |
| 80411 FORMAT (3X,"THIS TEST PRINTS 1, 22, 333, 4444, AND 25555 UNDER" ) 02360005 |
| WRITE (I02,80412) 02370005 |
| 80412 FORMAT (10X,"(10X,I1,3X,I2,3X,I3,3X,I4,3X,I5)" ) 02380005 |
| WRITE (I02,80410) IVON01, IVON02, IVON03, IVON04, IVON05 02390005 |
| 80410 FORMAT (10X,I1,3X,I2,3X,I3,3X,I4,3X,I5) 02400005 |
| 421 CONTINUE 02410005 |
| IVTNUM = 42 02420005 |
| C 02430005 |
| C **** TEST 042 **** 02440005 |
| C TEST 42 - HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS 02450005 |
| C COMBINE HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS IN 02460005 |
| C ONE FORMAT STATEMENT 02470005 |
| C 02480005 |
| IVON01=113 02490005 |
| IVON02=8 02500005 |
| WRITE (I02,90002) 02510005 |
| WRITE (I02,80001) IVTNUM 02520005 |
| WRITE (I02,80421) 02530005 |
| 80421 FORMAT (10X,"NEXT TWO LINES ARE IDENTICAL" ) 02540005 |
| WRITE (I02,80422) 02550005 |
| 80422 FORMAT (" IVON01 = 113 IVON02 = 8" ) 02560005 |
| WRITE (I02,80420) IVON01, IVON02 02570005 |
| 80420 FORMAT (6X,"IVON01 =",I5,3X,"IVON02 =",I5) 02580005 |
| 431 CONTINUE 02590005 |
| IVTNUM=43 02600005 |
| C 02610005 |
| C **** TEST 043 **** 02620005 |
| C TEST 43 - NUMERIC FIELD DESCRIPTOR I2 02630005 |
| C PRINT NEGATIVE INTEGER 02640005 |
| C 02650005 |
| IVON01 = -1 02660005 |
| WRITE (I02,90000) 02670005 |
| WRITE (I02,90002) 02680005 |
| WRITE (I02,80001) IVTNUM 02690005 |
| WRITE (I02,80431) 02700005 |
| 80431 FORMAT (11X,"THIS TEST PRINTS -1 UNDER I2 DESCRIPTOR" ) 02710005 |
| WRITE (I02,80430) IVON01 02720005 |
| 80430 FORMAT (11X,I2) 02730005 |
| 441 CONTINUE 02740005 |
| IVTNUM = 44 02750005 |
| C 02760005 |
| C **** TEST 044 **** 02770005 |
| C TEST 44 - NUMERIC FIELD DESCRIPTOR I3 02780005 |
| C PRINT NEGATIVE INTEGER 02790005 |
| C 02800005 |
| IVON01 = -22 02810005 |
| WRITE (I02,90002) 02820005 |
| WRITE (I02,80001) IVTNUM 02830005 |
| WRITE (I02,80441) 02840005 |
| 80441 FORMAT (11X,"THIS TEST PRINTS -22 UNDER I3 DESCRIPTOR" ) 02850005 |
| WRITE (I02,80440) IVON01 02860005 |
| 80440 FORMAT (11X,I3) 02870005 |
| 451 CONTINUE 02880005 |
| IVTNUM = 45 02890005 |
| C 02900005 |
| C **** TEST 045 **** 02910005 |
| C TEST 45 - NUMERIC FIELD DESCRIPTOR I4 02920005 |
| C PRINT NEGATIVE INTEGER 02930005 |
| C 02940005 |
| IVON01 = -333 02950005 |
| WRITE (I02,90002) 02960005 |
| WRITE (I02,80001) IVTNUM 02970005 |
| WRITE (I02,80451) 02980005 |
| 80451 FORMAT (11X,"THIS TEST PRINTS -333 UNDER I4 DESCRIPTOR" ) 02990005 |
| WRITE (I02,80450) IVON01 03000005 |
| 80450 FORMAT (11X,I4) 03010005 |
| 461 CONTINUE 03020005 |
| IVTNUM = 46 03030005 |
| C 03040005 |
| C **** TEST 046 **** 03050005 |
| C TEST 46 - NUMERIC FIELD DESCRIPTOR I5 03060005 |
| C PRINT NEGATIVE INTEGER 03070005 |
| C 03080005 |
| IVON01 = -4444 03090005 |
| WRITE (I02,90002) 03100005 |
| WRITE (I02,80001) IVTNUM 03110005 |
| WRITE (I02,80461) 03120005 |
| 80461 FORMAT (11X,"THIS TEST PRINTS -4444 UNDER I5 DESCRIPTOR" ) 03130005 |
| WRITE (I02,80460) IVON01 03140005 |
| 80460 FORMAT (11X,I5) 03150005 |
| 471 CONTINUE 03160005 |
| IVTNUM = 47 03170005 |
| C 03180005 |
| C **** TEST 047 **** 03190005 |
| C TEST 47 - NUMERIC FIELD DESCRIPTOR I6 03200005 |
| C PRINT NEGATIVE INTEGER 03210005 |
| C 03220005 |
| IVON01 = -15555 03230005 |
| WRITE (I02,90002) 03240005 |
| WRITE (I02,80001) IVTNUM 03250005 |
| WRITE (I02,80471) 03260005 |
| 80471 FORMAT (11X,"THIS TEST PRINTS -15555 UNDER DESCRIPTOR I6" ) 03270005 |
| WRITE (I02,80470) IVON01 03280005 |
| 80470 FORMAT (11X,I6) 03290005 |
| 481 CONTINUE 03300005 |
| IVTNUM = 48 03310005 |
| C 03320005 |
| C **** TEST 048 **** 03330005 |
| C TEST 48 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION 03340005 |
| C PRINT NEGATIVE INTEGERS 03350005 |
| C 03360005 |
| IVON01 = -9 03370005 |
| IVON02 = -88 03380005 |
| IVON03 = -777 03390005 |
| IVON04 = -6666 03400005 |
| IVON05 = -25555 03410005 |
| WRITE (I02,90002) 03420005 |
| WRITE (I02,80001) IVTNUM 03430005 |
| WRITE (I02,80481) 03440005 |
| 80481 FORMAT (8X,"THIS TEST PRINTS -9, -88, -777, -6666, AND -25555" ) 03450005 |
| WRITE (I02,80482) 03460005 |
| 80482 FORMAT (11X,"UNDER FORMAT 10X,I2,3X,I3,3X,I4,3X,I5,3X,I6" ) 03470005 |
| WRITE (I02,80480) IVON01,IVON02,IVON03,IVON04,IVON05 03480005 |
| 80480 FORMAT (10X,I2,3X,I3,3X,I4,3X,I5,3X,I6) 03490005 |
| 491 CONTINUE 03500005 |
| IVTNUM = 49 03510005 |
| C 03520005 |
| C **** TEST 049 **** 03530005 |
| C TEST 49 - NUMERIC FIELD DESCRIPTOR I5 03540005 |
| C MIX POSITIVE AND NEGATIVE INTEGER OUTPUT IN ONE FORMAT 03550005 |
| C STATEMENT ALL UNDER I5 DESCRIPTOR 03560005 |
| C 03570005 |
| IVON01 =5 03580005 |
| IVON02 = -54 03590005 |
| IVON03 = 543 03600005 |
| IVON04 = -5432 03610005 |
| IVON05=32000 03620005 |
| WRITE (I02,90002) 03630005 |
| WRITE (I02,80001) IVTNUM 03640005 |
| WRITE (I02,80491) 03650005 |
| 80491 FORMAT (18X,"THIS TEST PRINTS 5, -54, 543, -5432, AND 32000" ) 03660005 |
| WRITE (I02,80492) 03670005 |
| 80492 FORMAT (11X,"UNDER I5 NUMERIC FIELD DESCRIPTOR" ) 03680005 |
| WRITE (I02,80490) IVON01,IVON02,IVON03,IVON04,IVON05 03690005 |
| 80490 FORMAT (11X,I5,3X,I5,3X,I5,3X,I5,3X,I5) 03700005 |
| C 03710005 |
| C WRITE PAGE FOOTINGS 03720005 |
| 99999 CONTINUE 03730005 |
| WRITE (I02,90002) 03740005 |
| WRITE (I02,90006) 03750005 |
| WRITE (I02,90002) 03760005 |
| WRITE (I02,90007) 03770005 |
| C 03780005 |
| C TERMINATE ROUTINE EXECUTION 03790005 |
| STOP 03800005 |
| C 03810005 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 03820005 |
| 90000 FORMAT ("1") 03830005 |
| 90002 FORMAT (" ") 03840005 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03850005 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 03860005 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 03870005 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 03880005 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 03890005 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 03900005 |
| C FORMAT STATEMENTS FOR THIS ROUTINE 03910005 |
| 80001 FORMAT (10X,"TEST ",I2) 03920005 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM005" ) 03930005 |
| END 03940005 |