blob: 1e5d2f69f085bc0401078a659442d46b5b19f7f2 [file] [log] [blame]
PROGRAM FM363
C***********************************************************************00010363
C***** FORTRAN 77 00020363
C***** FM363 X66MX - (171) 00030363
C***** 00040363
C***********************************************************************00050363
C***** GENERAL PURPOSE SUBSET REF00060363
C***** TEST THAT ALL INTRINSIC FUNCTIONS WOULD ACCEPT 15.3 00070363
C***** ANY EXPRESSION OF THE TYPE SPECIFIED IN THE (TABLE 5)00080363
C***** INTRINSIC FUNCTION TABLE - ANS REFS - 15.10 00090363
C***** 00100363
C***** GENERAL COMMENTS 00110363
C***** SEGMENTS XINT, XREAL, XAINT, XABS, XAMOD, 00120363
C***** XSIGN, XDIM, XMAX, XMIN ASSUMED WORKING 00130363
C***** 00140363
CBB** ********************** BBCCOMNT **********************************00150363
C**** 00160363
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00170363
C**** VERSION 2.1 00180363
C**** 00190363
C**** 00200363
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00210363
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00220363
C**** SOFTWARE STANDARDS VALIDATION GROUP 00230363
C**** BUILDING 225 RM A266 00240363
C**** GAITHERSBURG, MD 20899 00250363
C**** 00260363
C**** 00270363
C**** 00280363
CBE** ********************** BBCCOMNT **********************************00290363
CBB** ********************** BBCINITA **********************************00300363
C**** SPECIFICATION STATEMENTS 00310363
C**** 00320363
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00330363
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00340363
CBE** ********************** BBCINITA **********************************00350363
CBB** ********************** BBCINITB **********************************00360363
C**** INITIALIZE SECTION 00370363
DATA ZVERS, ZVERSD, ZDATE 00380363
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00390363
DATA ZCOMPL, ZNAME, ZTAPE 00400363
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00410363
DATA ZPROJ, ZTAPED, ZPROG 00420363
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00430363
DATA REMRKS /' '/ 00440363
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00450363
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00460363
C**** 00470363
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00480363
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00490363
CZ03 ZPROG = 'PROGRAM NAME' 00500363
CZ04 ZDATE = 'DATE OF TEST' 00510363
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00520363
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00530363
CZ07 ZNAME = 'NAME OF USER' 00540363
CZ08 ZTAPE = 'TAPE OWNER/ID' 00550363
CZ09 ZTAPED = 'DATE TAPE COPIED' 00560363
C 00570363
IVPASS = 0 00580363
IVFAIL = 0 00590363
IVDELE = 0 00600363
IVINSP = 0 00610363
IVTOTL = 0 00620363
IVTOTN = 0 00630363
ICZERO = 0 00640363
C 00650363
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00660363
I01 = 05 00670363
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00680363
I02 = 06 00690363
C 00700363
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00710363
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00720363
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00730363
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00740363
C 00750363
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00760363
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00770363
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00780363
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00790363
C 00800363
CBE** ********************** BBCINITB **********************************00810363
NUVI = I02 00820363
IVTOTL = 14 00830363
ZPROG = 'FM363' 00840363
CBB** ********************** BBCHED0A **********************************00850363
C**** 00860363
C**** WRITE REPORT TITLE 00870363
C**** 00880363
WRITE (I02, 90002) 00890363
WRITE (I02, 90006) 00900363
WRITE (I02, 90007) 00910363
WRITE (I02, 90008) ZVERS, ZVERSD 00920363
WRITE (I02, 90009) ZPROG, ZPROG 00930363
WRITE (I02, 90010) ZDATE, ZCOMPL 00940363
CBE** ********************** BBCHED0A **********************************00950363
C***** 00960363
C***** HEADER FOR SEGMENT 171 WRITTEN 00970363
WRITE (NUVI,17101) 00980363
17101 FORMAT(" ",// 2X,"X66MX - (171) SUBSET INTRINSIC FUNCTIONS--" //00990363
1 10X,"IN ARITHMETIC EXPRESSIONS" 01000363
2 //2X, " SUBSET REF. - 15.10, 6.1.4" ) 01010363
CBB** ********************** BBCHED0B **********************************01020363
C**** WRITE DETAIL REPORT HEADERS 01030363
C**** 01040363
WRITE (I02,90004) 01050363
WRITE (I02,90004) 01060363
WRITE (I02,90013) 01070363
WRITE (I02,90014) 01080363
WRITE (I02,90015) IVTOTL 01090363
CBE** ********************** BBCHED0B **********************************01100363
C***** 01110363
C***** TEST OF INTRINSIC FUNCTIONS IN EXPRESSIONS 01120363
C***** 01130363
CT001* TEST 1 01140363
IVTNUM = 1 01150363
RJBVS = 5.2 01160363
IJAVI = INT(RJBVS) + 3 01170363
IF (IJAVI - 8) 20010, 10010, 20010 01180363
10010 IVPASS = IVPASS + 1 01190363
WRITE (NUVI, 80002) IVTNUM 01200363
GO TO 0011 01210363
20010 IVFAIL = IVFAIL + 1 01220363
IVCORR = 8 01230363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01240363
0011 CONTINUE 01250363
CT002* TEST 2 01260363
IVTNUM = 2 01270363
RJBVS = 4.8 01280363
IJAVI = IFIX(RJBVS) - 2 01290363
IF (IJAVI - 2) 20020, 10020, 20020 01300363
10020 IVPASS = IVPASS + 1 01310363
WRITE (NUVI, 80002) IVTNUM 01320363
GO TO 0021 01330363
20020 IVFAIL = IVFAIL + 1 01340363
IVCORR = 2 01350363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01360363
0021 CONTINUE 01370363
CT003* TEST 3 01380363
IVTNUM = 3 01390363
RJBVS = 2.8 01400363
IJAVI = 50 * NINT(RJBVS) 01410363
IF (IJAVI - 150) 20030, 10030, 20030 01420363
10030 IVPASS = IVPASS + 1 01430363
WRITE (NUVI, 80002) IVTNUM 01440363
GO TO 0031 01450363
20030 IVFAIL = IVFAIL + 1 01460363
IVCORR = 150 01470363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01480363
0031 CONTINUE 01490363
CT004* TEST 4 01500363
IVTNUM = 4 01510363
IJBVI = -4 01520363
IJAVI = IABS(IJBVI) / (-4) 01530363
IF (IJAVI + 1) 20040, 10040, 20040 01540363
10040 IVPASS = IVPASS + 1 01550363
WRITE (NUVI, 80002) IVTNUM 01560363
GO TO 0041 01570363
20040 IVFAIL = IVFAIL + 1 01580363
IVCORR = -1 01590363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01600363
0041 CONTINUE 01610363
CT005* TEST 5 01620363
IVTNUM = 5 01630363
IJBVI = 7 01640363
IJDVI = 4 01650363
IJAVI = MOD(IJBVI, IJDVI) ** 2 01660363
IF (IJAVI - 9) 20050, 10050, 20050 01670363
10050 IVPASS = IVPASS + 1 01680363
WRITE (NUVI, 80002) IVTNUM 01690363
GO TO 0051 01700363
20050 IVFAIL = IVFAIL + 1 01710363
IVCORR = 9 01720363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01730363
0051 CONTINUE 01740363
CT006* TEST 6 01750363
IVTNUM = 6 01760363
IJBVI = -3 01770363
IJDVI = 1 01780363
IJAVI = 2 ** ISIGN(IJBVI, IJDVI) 01790363
IF (IJAVI - 8) 20060, 10060, 20060 01800363
10060 IVPASS = IVPASS + 1 01810363
WRITE (NUVI, 80002) IVTNUM 01820363
GO TO 0061 01830363
20060 IVFAIL = IVFAIL + 1 01840363
IVCORR = 8 01850363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 01860363
0061 CONTINUE 01870363
CT007* TEST 7 01880363
IVTNUM = 7 01890363
IJBVI = 5 01900363
IJDVI = 2 01910363
IJEVI = -2 01920363
IJAVI = IDIM(IJBVI, IJDVI) * 2 + MAX0(IJEVI, IJDVI) - 7 01930363
IF (IJAVI - 1) 20070, 10070, 20070 01940363
10070 IVPASS = IVPASS + 1 01950363
WRITE (NUVI, 80002) IVTNUM 01960363
GO TO 0071 01970363
20070 IVFAIL = IVFAIL + 1 01980363
IVCORR = 1 01990363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 02000363
0071 CONTINUE 02010363
CT008* TEST 8 02020363
IVTNUM = 8 02030363
IJBVI = 2 02040363
IJDVI = 3 02050363
RJBVS = 2.2 02060363
RJDVS = 4.8 02070363
RJEVS = -2.2 02080363
RJFVS = -3.8 02090363
IJAVI = MIN0(IJBVI, IJDVI) * 2 - MAX1(RJBVS, RJDVS) / 2 02100363
1 + MIN1(RJEVS, RJFVS) + 5 02110363
IF (IJAVI - 4) 20080, 10080, 20080 02120363
10080 IVPASS = IVPASS + 1 02130363
WRITE (NUVI, 80002) IVTNUM 02140363
GO TO 0081 02150363
20080 IVFAIL = IVFAIL + 1 02160363
IVCORR = 4 02170363
WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 02180363
0081 CONTINUE 02190363
CT009* TEST 9 02200363
IVTNUM = 9 02210363
IJBVI = 2 02220363
RJAVS = FLOAT(IJBVI) + 3.5 02230363
IF (RJAVS - 5.4997) 20090, 10090, 40090 02240363
40090 IF (RJAVS - 5.5003) 10090, 10090, 20090 02250363
10090 IVPASS = IVPASS + 1 02260363
WRITE (NUVI, 80002) IVTNUM 02270363
GO TO 0091 02280363
20090 IVFAIL = IVFAIL + 1 02290363
RVCORR = 5.5 02300363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 02310363
0091 CONTINUE 02320363
CT010* TEST 10 02330363
IVTNUM = 10 02340363
IJBVI = 2 02350363
RJAVS = REAL(IJBVI) * 3.0 02360363
IF (RJAVS - 5.9997) 20100, 10100, 40100 02370363
40100 IF (RJAVS - 6.0003) 10100, 10100, 20100 02380363
10100 IVPASS = IVPASS + 1 02390363
WRITE (NUVI, 80002) IVTNUM 02400363
GO TO 0101 02410363
20100 IVFAIL = IVFAIL + 1 02420363
RVCORR = 6.0 02430363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 02440363
0101 CONTINUE 02450363
CT011* TEST 11 02460363
IVTNUM = 11 02470363
RJBVS = 4.5 02480363
RJAVS = AINT(RJBVS) ** 0.5 02490363
IF (RJAVS - 1.9999) 20110, 10110, 40110 02500363
40110 IF (RJAVS - 2.0001) 10110, 10110, 20110 02510363
10110 IVPASS = IVPASS + 1 02520363
WRITE (NUVI, 80002) IVTNUM 02530363
GO TO 0111 02540363
20110 IVFAIL = IVFAIL + 1 02550363
RVCORR = 2.0 02560363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 02570363
0111 CONTINUE 02580363
CT012* TEST 12 02590363
IVTNUM = 12 02600363
RJBVS = 2.8 02610363
RJDVS = 2.2 02620363
RJAVS = 1.5 * ANINT(RJBVS) + 6.6 / ABS(RJDVS) 02630363
IF (RJAVS - 7.4996 ) 20120, 10120, 40120 02640363
40120 IF (RJAVS - 7.5004 ) 10120, 10120, 20120 02650363
10120 IVPASS = IVPASS + 1 02660363
WRITE (NUVI, 80002) IVTNUM 02670363
GO TO 0121 02680363
20120 IVFAIL = IVFAIL + 1 02690363
RVCORR = 7.5 02700363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 02710363
0121 CONTINUE 02720363
CT013* TEST 13 02730363
IVTNUM = 13 02740363
RJBVS = 4.5 02750363
RJDVS = 2.2 02760363
IJBVI = -5 02770363
IJDVI = 5 02780363
RJAVS = (AMOD(RJBVS, RJDVS) + 1.4) * (ISIGN(IJBVI, IJDVI) - 3.0)02790363
IF (RJAVS - 2.9998) 20130, 10130, 40130 02800363
40130 IF (RJAVS - 3.0002) 10130, 10130, 20130 02810363
10130 IVPASS = IVPASS + 1 02820363
WRITE (NUVI, 80002) IVTNUM 02830363
GO TO 0131 02840363
20130 IVFAIL = IVFAIL + 1 02850363
RVCORR = 3.0 02860363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 02870363
0131 CONTINUE 02880363
CT014* TEST 14 02890363
IVTNUM = 14 02900363
RJBVS = 6.2 02910363
RJDVS = 5.2 02920363
IJBVI = 2 02930363
IJDVI = 3 02940363
RJEVS = 2.0 02950363
RJFVS = 3.0 02960363
RJAVS = (DIM(RJBVS, RJDVS) * AMAX0(IJBVI, IJDVI)) ** 02970363
1 (AMIN0(IJBVI, IJDVI) - AMIN1(RJEVS, RJFVS)) 02980363
IF (RJAVS - 0.99995) 20140, 10140, 40140 02990363
40140 IF (RJAVS - 1.0001) 10140, 10140, 20140 03000363
10140 IVPASS = IVPASS + 1 03010363
WRITE (NUVI, 80002) IVTNUM 03020363
GO TO 0141 03030363
20140 IVFAIL = IVFAIL + 1 03040363
RVCORR = 1.0 03050363
WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 03060363
0141 CONTINUE 03070363
C***** 03080363
CBB** ********************** BBCSUM0 **********************************03090363
C**** WRITE OUT TEST SUMMARY 03100363
C**** 03110363
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 03120363
WRITE (I02, 90004) 03130363
WRITE (I02, 90014) 03140363
WRITE (I02, 90004) 03150363
WRITE (I02, 90020) IVPASS 03160363
WRITE (I02, 90022) IVFAIL 03170363
WRITE (I02, 90024) IVDELE 03180363
WRITE (I02, 90026) IVINSP 03190363
WRITE (I02, 90028) IVTOTN, IVTOTL 03200363
CBE** ********************** BBCSUM0 **********************************03210363
CBB** ********************** BBCFOOT0 **********************************03220363
C**** WRITE OUT REPORT FOOTINGS 03230363
C**** 03240363
WRITE (I02,90016) ZPROG, ZPROG 03250363
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 03260363
WRITE (I02,90019) 03270363
CBE** ********************** BBCFOOT0 **********************************03280363
CBB** ********************** BBCFMT0A **********************************03290363
C**** FORMATS FOR TEST DETAIL LINES 03300363
C**** 03310363
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 03320363
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 03330363
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 03340363
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 03350363
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 03360363
1I6,/," ",15X,"CORRECT= " ,I6) 03370363
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03380363
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 03390363
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03400363
1A21,/," ",16X,"CORRECT= " ,A21) 03410363
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 03420363
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 03430363
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 03440363
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 03450363
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 03460363
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 03470363
80050 FORMAT (" ",48X,A31) 03480363
CBE** ********************** BBCFMT0A **********************************03490363
CBB** ********************** BBCFMT0B **********************************03500363
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03510363
C**** 03520363
90002 FORMAT ("1") 03530363
90004 FORMAT (" ") 03540363
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03550363
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03560363
90008 FORMAT (" ",21X,A13,A17) 03570363
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03580363
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03590363
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03600363
1 7X,"REMARKS",24X) 03610363
90014 FORMAT (" ","----------------------------------------------" , 03620363
1 "---------------------------------" ) 03630363
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03640363
C**** 03650363
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03660363
C**** 03670363
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03680363
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03690363
1 A13) 03700363
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03710363
C**** 03720363
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03730363
C**** 03740363
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03750363
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03760363
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03770363
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03780363
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03790363
CBE** ********************** BBCFMT0B **********************************03800363
C***** 03810363
C***** END OF TEST SEGMENT 171 03820363
STOP 03830363
END 03840363
03850363