blob: 6cde951bf3d65e1620e7a80f19da9f965991213c [file] [log] [blame]
PROGRAM FM800
C***********************************************************************00010800
C***** FORTRAN 77 00020800
C***** FM800 YIDINT - (151) 00030800
C***** 00040800
C***********************************************************************00050800
C***** GENERAL PURPOSE ANS REF 00060800
C***** TEST INTRINSIC FUNCTION IDINT -- 15.3 00070800
C***** TRUNCATION (SIGN OF A * LARGEST INTEGER LE ABS(A) ) (TABLE 5)00080800
C***** 00090800
CBB** ********************** BBCCOMNT **********************************00100800
C**** 00110800
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00120800
C**** VERSION 2.1 00130800
C**** 00140800
C**** 00150800
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00160800
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00170800
C**** SOFTWARE STANDARDS VALIDATION GROUP 00180800
C**** BUILDING 225 RM A266 00190800
C**** GAITHERSBURG, MD 20899 00200800
C**** 00210800
C**** 00220800
C**** 00230800
CBE** ********************** BBCCOMNT **********************************00240800
C***** S P E C I F I C A T I O N S SEGMENT 151 00250800
C***** 00260800
DOUBLE PRECISION DLAVD, DLBVD 00270800
C***** 00280800
CBB** ********************** BBCINITA **********************************00290800
C**** SPECIFICATION STATEMENTS 00300800
C**** 00310800
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00320800
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00330800
CBE** ********************** BBCINITA **********************************00340800
CBB** ********************** BBCINITB **********************************00350800
C**** INITIALIZE SECTION 00360800
DATA ZVERS, ZVERSD, ZDATE 00370800
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00380800
DATA ZCOMPL, ZNAME, ZTAPE 00390800
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00400800
DATA ZPROJ, ZTAPED, ZPROG 00410800
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00420800
DATA REMRKS /' '/ 00430800
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00440800
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00450800
C**** 00460800
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00470800
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00480800
CZ03 ZPROG = 'PROGRAM NAME' 00490800
CZ04 ZDATE = 'DATE OF TEST' 00500800
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00510800
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00520800
CZ07 ZNAME = 'NAME OF USER' 00530800
CZ08 ZTAPE = 'TAPE OWNER/ID' 00540800
CZ09 ZTAPED = 'DATE TAPE COPIED' 00550800
C 00560800
IVPASS = 0 00570800
IVFAIL = 0 00580800
IVDELE = 0 00590800
IVINSP = 0 00600800
IVTOTL = 0 00610800
IVTOTN = 0 00620800
ICZERO = 0 00630800
C 00640800
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00650800
I01 = 05 00660800
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00670800
I02 = 06 00680800
C 00690800
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00700800
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00710800
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00720800
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00730800
C 00740800
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00750800
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00760800
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00770800
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00780800
C 00790800
CBE** ********************** BBCINITB **********************************00800800
NUVI = I02 00810800
IVTOTL = 12 00820800
ZPROG = 'FM800' 00830800
CBB** ********************** BBCHED0A **********************************00840800
C**** 00850800
C**** WRITE REPORT TITLE 00860800
C**** 00870800
WRITE (I02, 90002) 00880800
WRITE (I02, 90006) 00890800
WRITE (I02, 90007) 00900800
WRITE (I02, 90008) ZVERS, ZVERSD 00910800
WRITE (I02, 90009) ZPROG, ZPROG 00920800
WRITE (I02, 90010) ZDATE, ZCOMPL 00930800
CBE** ********************** BBCHED0A **********************************00940800
C***** 00950800
C***** HEADER FOR SEGMENT 151 WRITTEN 00960800
WRITE (NUVI,15101) 00970800
15101 FORMAT (" ", // 1X,"YIDINT - (151) INTRINSIC FUNCTION--" //17X, 00980800
1 "IDINT (TYPE CONVERSION)" //" ANS REF. - 15.3" ) 00990800
CBB** ********************** BBCHED0B **********************************01000800
C**** WRITE DETAIL REPORT HEADERS 01010800
C**** 01020800
WRITE (I02,90004) 01030800
WRITE (I02,90004) 01040800
WRITE (I02,90013) 01050800
WRITE (I02,90014) 01060800
WRITE (I02,90015) IVTOTL 01070800
CBE** ********************** BBCHED0B **********************************01080800
C***** 01090800
CT001* TEST 1 THE VALUE ZERO 01100800
IVTNUM = 1 01110800
DLBVD = 0.0D0 01120800
ILAVI = IDINT(DLBVD) 01130800
IF (ILAVI - 0) 20010, 10010, 20010 01140800
10010 IVPASS = IVPASS + 1 01150800
WRITE (NUVI, 80002) IVTNUM 01160800
GO TO 0011 01170800
20010 IVFAIL = IVFAIL + 1 01180800
IVCORR = 0 01190800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01200800
0011 CONTINUE 01210800
CT002* TEST 2 A VALUE IN (0,1) 01220800
IVTNUM = 2 01230800
DLBVD = 3.57D-1 01240800
ILAVI = IDINT(DLBVD) 01250800
IF (ILAVI - 0) 20020, 10020, 20020 01260800
10020 IVPASS = IVPASS + 1 01270800
WRITE (NUVI, 80002) IVTNUM 01280800
GO TO 0021 01290800
20020 IVFAIL = IVFAIL + 1 01300800
IVCORR = 0 01310800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01320800
0021 CONTINUE 01330800
CT003* TEST 3 THE VALUE ONE 01340800
IVTNUM = 3 01350800
DLBVD = 1.00001D0 01360800
ILAVI = IDINT(DLBVD) 01370800
IF (ILAVI - 1) 20030, 10030, 20030 01380800
10030 IVPASS = IVPASS + 1 01390800
WRITE (NUVI, 80002) IVTNUM 01400800
GO TO 0031 01410800
20030 IVFAIL = IVFAIL + 1 01420800
IVCORR = 1 01430800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01440800
0031 CONTINUE 01450800
CT004* TEST 4 A INTEGRAL VALUE OTHER THAN O, 1 01460800
IVTNUM = 4 01470800
DLBVD = 6.00001D0 01480800
ILAVI = IDINT(DLBVD) 01490800
IF (ILAVI - 6) 20040, 10040, 20040 01500800
10040 IVPASS = IVPASS + 1 01510800
WRITE (NUVI, 80002) IVTNUM 01520800
GO TO 0041 01530800
20040 IVFAIL = IVFAIL + 1 01540800
IVCORR = 6 01550800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01560800
0041 CONTINUE 01570800
CT005* TEST 5 A VALUE IN (X,X+1) 01580800
IVTNUM = 5 01590800
DLBVD = 0.375D1 01600800
ILAVI = IDINT(DLBVD) 01610800
IF (ILAVI - 3) 20050, 10050, 20050 01620800
10050 IVPASS = IVPASS + 1 01630800
WRITE (NUVI, 80002) IVTNUM 01640800
GO TO 0051 01650800
20050 IVFAIL = IVFAIL + 1 01660800
IVCORR = 3 01670800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01680800
0051 CONTINUE 01690800
CT006* TEST 6 A NEGATIVE VALUE WITH MAGNITUDE IN (0,1) 01700800
IVTNUM = 6 01710800
DLBVD = -0.375D0 01720800
ILAVI = IDINT(DLBVD) 01730800
IF (ILAVI - 0) 20060, 10060, 20060 01740800
10060 IVPASS = IVPASS + 1 01750800
WRITE (NUVI, 80002) IVTNUM 01760800
GO TO 0061 01770800
20060 IVFAIL = IVFAIL + 1 01780800
IVCORR = 0 01790800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01800800
0061 CONTINUE 01810800
CT007* TEST 7 THE VALUE -1 01820800
IVTNUM = 7 01830800
DLBVD = -0.100001D1 01840800
ILAVI = IDINT(DLBVD) 01850800
IF (ILAVI + 1) 20070, 10070, 20070 01860800
10070 IVPASS = IVPASS + 1 01870800
WRITE (NUVI, 80002) IVTNUM 01880800
GO TO 0071 01890800
20070 IVFAIL = IVFAIL + 1 01900800
IVCORR = -1 01910800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 01920800
0071 CONTINUE 01930800
CT008* TEST 8 A NEGATIVE INTEGRAL VALUE 01940800
IVTNUM = 8 01950800
DLBVD = -6.00001D0 01960800
ILAVI = IDINT(DLBVD) 01970800
IF (ILAVI + 6) 20080, 10080, 20080 01980800
10080 IVPASS = IVPASS + 1 01990800
WRITE (NUVI, 80002) IVTNUM 02000800
GO TO 0081 02010800
20080 IVFAIL = IVFAIL + 1 02020800
IVCORR = -6 02030800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 02040800
0081 CONTINUE 02050800
CT009* TEST 9 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+1) 02060800
IVTNUM = 9 02070800
DLBVD = -0.375D1 02080800
ILAVI = IDINT(DLBVD) 02090800
IF (ILAVI + 3) 20090, 10090, 20090 02100800
10090 IVPASS = IVPASS + 1 02110800
WRITE (NUVI, 80002) IVTNUM 02120800
GO TO 0091 02130800
20090 IVFAIL = IVFAIL + 1 02140800
IVCORR = -3 02150800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 02160800
0091 CONTINUE 02170800
CT010* TEST 10 ZERO PREFIXED WITH A MINUS SIGN 02180800
IVTNUM = 10 02190800
DLAVD = 0.0D0 02200800
ILAVI = IDINT(-DLAVD) 02210800
IF (ILAVI + 0) 20100, 10100, 20100 02220800
10100 IVPASS = IVPASS + 1 02230800
WRITE (NUVI, 80002) IVTNUM 02240800
GO TO 0101 02250800
20100 IVFAIL = IVFAIL + 1 02260800
IVCORR = 0 02270800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 02280800
0101 CONTINUE 02290800
CT011* TEST 11 AN ARITHMETIC EXPRESSION PRESENTED TO IDINT 02300800
IVTNUM = 11 02310800
DLAVD = 0.375D1 02320800
DLBVD = 3.5D0 02330800
ILAVI = (IDINT(DLAVD + DLBVD * 0.5D1)) 02340800
IF (ILAVI - 21) 20110, 10110, 20110 02350800
10110 IVPASS = IVPASS + 1 02360800
WRITE (NUVI, 80002) IVTNUM 02370800
GO TO 0111 02380800
20110 IVFAIL = IVFAIL + 1 02390800
IVCORR = 21 02400800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 02410800
0111 CONTINUE 02420800
CT012* TEST 12 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT 02430800
IVTNUM = 12 02440800
DLAVD = 3.5D0 02450800
ILAVI = IDINT(DLAVD ** 2.5) 02460800
ILBVI = DLAVD ** 2.5 02470800
IF (ILAVI - ILBVI) 20120, 10120, 20120 02480800
10120 IVPASS = IVPASS + 1 02490800
WRITE (NUVI, 80002) IVTNUM 02500800
GO TO 0121 02510800
20120 IVFAIL = IVFAIL + 1 02520800
IVCORR = ILBVI 02530800
WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 02540800
0121 CONTINUE 02550800
CBB** ********************** BBCSUM0 **********************************02560800
C**** WRITE OUT TEST SUMMARY 02570800
C**** 02580800
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02590800
WRITE (I02, 90004) 02600800
WRITE (I02, 90014) 02610800
WRITE (I02, 90004) 02620800
WRITE (I02, 90020) IVPASS 02630800
WRITE (I02, 90022) IVFAIL 02640800
WRITE (I02, 90024) IVDELE 02650800
WRITE (I02, 90026) IVINSP 02660800
WRITE (I02, 90028) IVTOTN, IVTOTL 02670800
CBE** ********************** BBCSUM0 **********************************02680800
CBB** ********************** BBCFOOT0 **********************************02690800
C**** WRITE OUT REPORT FOOTINGS 02700800
C**** 02710800
WRITE (I02,90016) ZPROG, ZPROG 02720800
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02730800
WRITE (I02,90019) 02740800
CBE** ********************** BBCFOOT0 **********************************02750800
CBB** ********************** BBCFMT0A **********************************02760800
C**** FORMATS FOR TEST DETAIL LINES 02770800
C**** 02780800
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02790800
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02800800
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02810800
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02820800
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02830800
1I6,/," ",15X,"CORRECT= " ,I6) 02840800
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02850800
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02860800
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02870800
1A21,/," ",16X,"CORRECT= " ,A21) 02880800
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02890800
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02900800
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 02910800
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 02920800
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 02930800
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 02940800
80050 FORMAT (" ",48X,A31) 02950800
CBE** ********************** BBCFMT0A **********************************02960800
CBB** ********************** BBCFMAT1 **********************************02970800
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE 02980800
C**** 02990800
80031 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03000800
1D17.10,/," ",16X,"CORRECT= " ,D17.10) 03010800
80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31) 03020800
80035 FORMAT (" ",16X,"CORRECT= " ,D17.10,10X,A31) 03030800
80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03040800
80039 FORMAT (" ",16X,"CORRECT= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03050800
80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03060800
80043 FORMAT (" ",16X,"CORRECT= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03070800
80045 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03080800
1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT= " , 03090800
2"(",F12.5,", ",F12.5,")") 03100800
CBE** ********************** BBCFMAT1 **********************************03110800
CBB** ********************** BBCFMT0B **********************************03120800
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03130800
C**** 03140800
90002 FORMAT ("1") 03150800
90004 FORMAT (" ") 03160800
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03170800
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03180800
90008 FORMAT (" ",21X,A13,A17) 03190800
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03200800
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03210800
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03220800
1 7X,"REMARKS",24X) 03230800
90014 FORMAT (" ","----------------------------------------------" , 03240800
1 "---------------------------------" ) 03250800
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03260800
C**** 03270800
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03280800
C**** 03290800
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03300800
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03310800
1 A13) 03320800
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03330800
C**** 03340800
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03350800
C**** 03360800
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03370800
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03380800
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03390800
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03400800
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03410800
CBE** ********************** BBCFMT0B **********************************03420800
C***** 03430800
C***** END OF TEST SEGMENT 151 03440800
STOP 03450800
END 03460800
03470800