blob: 2abe9b5dfc7757c4da785bb4daebe4fbb87fd96d [file] [log] [blame]
PROGRAM FM356
C***********************************************************************00010356
C***** FORTRAN 77 00020356
C***** FM356 XABS - (156) 00030356
C***** 00040356
C***********************************************************************00050356
C***** GENERAL PURPOSE SUBSET REF00060356
C***** TEST INTRINSIC FUNCTION ABS,IABS (ABSOLUTE VALUE) 15.3 00070356
C***** (TABLE 5)00080356
C***** 00090356
CBB** ********************** BBCCOMNT **********************************00100356
C**** 00110356
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00120356
C**** VERSION 2.1 00130356
C**** 00140356
C**** 00150356
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00160356
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00170356
C**** SOFTWARE STANDARDS VALIDATION GROUP 00180356
C**** BUILDING 225 RM A266 00190356
C**** GAITHERSBURG, MD 20899 00200356
C**** 00210356
C**** 00220356
C**** 00230356
CBE** ********************** BBCCOMNT **********************************00240356
CBB** ********************** BBCINITA **********************************00250356
C**** SPECIFICATION STATEMENTS 00260356
C**** 00270356
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00280356
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00290356
CBE** ********************** BBCINITA **********************************00300356
CBB** ********************** BBCINITB **********************************00310356
C**** INITIALIZE SECTION 00320356
DATA ZVERS, ZVERSD, ZDATE 00330356
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00340356
DATA ZCOMPL, ZNAME, ZTAPE 00350356
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00360356
DATA ZPROJ, ZTAPED, ZPROG 00370356
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00380356
DATA REMRKS /' '/ 00390356
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00400356
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00410356
C**** 00420356
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00430356
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00440356
CZ03 ZPROG = 'PROGRAM NAME' 00450356
CZ04 ZDATE = 'DATE OF TEST' 00460356
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00470356
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00480356
CZ07 ZNAME = 'NAME OF USER' 00490356
CZ08 ZTAPE = 'TAPE OWNER/ID' 00500356
CZ09 ZTAPED = 'DATE TAPE COPIED' 00510356
C 00520356
IVPASS = 0 00530356
IVFAIL = 0 00540356
IVDELE = 0 00550356
IVINSP = 0 00560356
IVTOTL = 0 00570356
IVTOTN = 0 00580356
ICZERO = 0 00590356
C 00600356
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00610356
I01 = 05 00620356
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00630356
I02 = 06 00640356
C 00650356
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00660356
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670356
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00680356
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00690356
C 00700356
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00710356
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00720356
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00730356
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00740356
C 00750356
CBE** ********************** BBCINITB **********************************00760356
NUVI = I02 00770356
IVTOTL = 10 00780356
ZPROG = 'FM356' 00790356
CBB** ********************** BBCHED0A **********************************00800356
C**** 00810356
C**** WRITE REPORT TITLE 00820356
C**** 00830356
WRITE (I02, 90002) 00840356
WRITE (I02, 90006) 00850356
WRITE (I02, 90007) 00860356
WRITE (I02, 90008) ZVERS, ZVERSD 00870356
WRITE (I02, 90009) ZPROG, ZPROG 00880356
WRITE (I02, 90010) ZDATE, ZCOMPL 00890356
CBE** ********************** BBCHED0A **********************************00900356
C***** 00910356
C***** HEADER FOR SEGMENT 156 00920356
WRITE(NUVI,15601) 00930356
15601 FORMAT( " ", // " XABS - (156) INTRINSIC FUNCTIONS--" // 11X, 00940356
1 "ABS, IABS (ABSOLUTE VALUE)" // 00950356
2 " SUBSET REF. - 15.3" ) 00960356
CBB** ********************** BBCHED0B **********************************00970356
C**** WRITE DETAIL REPORT HEADERS 00980356
C**** 00990356
WRITE (I02,90004) 01000356
WRITE (I02,90004) 01010356
WRITE (I02,90013) 01020356
WRITE (I02,90014) 01030356
WRITE (I02,90015) IVTOTL 01040356
CBE** ********************** BBCHED0B **********************************01050356
C***** 01060356
C***** TEST OF ABS 01070356
C***** 01080356
WRITE(NUVI, 15602) 01090356
15602 FORMAT (/ 8X, "TEST OF ABS" ) 01100356
CT001* TEST 1 THE VALUE ZERO 01110356
IVTNUM = 1 01120356
RDDVS = 0.0 01130356
RDAVS = ABS(RDDVS) 01140356
IF (RDAVS + .00005) 20010, 10010, 40010 01150356
40010 IF (RDAVS - .00005) 10010, 10010, 20010 01160356
10010 IVPASS = IVPASS + 1 01170356
WRITE (NUVI, 80002) IVTNUM 01180356
GO TO 0011 01190356
20010 IVFAIL = IVFAIL + 1 01200356
RVCORR = 0.0 01210356
WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 01220356
0011 CONTINUE 01230356
CT002* TEST 2 ZERO PREFIXED WITH A MINUS SIGN 01240356
IVTNUM = 2 01250356
RDDVS = 0.0 01260356
RDAVS = ABS(-RDDVS) 01270356
IF (RDAVS + .00005) 20020, 10020, 40020 01280356
40020 IF (RDAVS - .00005) 10020, 10020, 20020 01290356
10020 IVPASS = IVPASS + 1 01300356
WRITE (NUVI, 80002) IVTNUM 01310356
GO TO 0021 01320356
20020 IVFAIL = IVFAIL + 1 01330356
RVCORR = 0.0 01340356
WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 01350356
0021 CONTINUE 01360356
CT003* TEST 3 A POSITIVE NON-INTEGRAL VALUE 01370356
IVTNUM = 3 01380356
RDDVS = 35.875 01390356
RDAVS = ABS(RDDVS) 01400356
IF (RDAVS - 35.873) 20030, 10030, 40030 01410356
40030 IF (RDAVS - 35.877) 10030, 10030, 20030 01420356
10030 IVPASS = IVPASS + 1 01430356
WRITE (NUVI, 80002) IVTNUM 01440356
GO TO 0031 01450356
20030 IVFAIL = IVFAIL + 1 01460356
RVCORR = 35.875 01470356
WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 01480356
0031 CONTINUE 01490356
CT004* TEST 4 A NEGATIVE NON-INTEGRAL VALUE 01500356
IVTNUM = 4 01510356
RDBVS = -35.875 01520356
RDAVS = ABS(RDBVS) 01530356
IF (RDAVS - 35.873) 20040, 10040, 40040 01540356
40040 IF (RDAVS - 35.877) 10040, 10040, 20040 01550356
10040 IVPASS = IVPASS + 1 01560356
WRITE (NUVI, 80002) IVTNUM 01570356
GO TO 0041 01580356
20040 IVFAIL = IVFAIL + 1 01590356
RVCORR = 35.875 01600356
WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 01610356
0041 CONTINUE 01620356
CT005* TEST 5 ARITHMETIC EXPRESSION PRESENTED TO FUNCTION 01630356
IVTNUM = 5 01640356
RDDVS = 2.625 01650356
RDEVS = 3.0 01660356
RDAVS = ABS(-RDDVS - RDEVS ** 3) 01670356
IF (RDAVS - 29.623) 20050, 10050, 40050 01680356
40050 IF (RDAVS - 29.627) 10050, 10050, 20050 01690356
10050 IVPASS = IVPASS + 1 01700356
WRITE (NUVI, 80002) IVTNUM 01710356
GO TO 0051 01720356
20050 IVFAIL = IVFAIL + 1 01730356
RVCORR = 29.625 01740356
WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 01750356
0051 CONTINUE 01760356
C***** 01770356
C***** TEST OF IABS 01780356
C***** 01790356
WRITE(NUVI, 15604) 01800356
15604 FORMAT (/ 8X, "TEST OF IABS" ) 01810356
C***** 01820356
CT006* TEST 6 THE VALUE ZERO 01830356
IVTNUM = 6 01840356
IDDVI = 0 01850356
IDAVI = IABS(IDDVI) 01860356
IF (IDAVI - 0) 20060, 10060, 20060 01870356
10060 IVPASS = IVPASS + 1 01880356
WRITE (NUVI, 80002) IVTNUM 01890356
GO TO 0061 01900356
20060 IVFAIL = IVFAIL + 1 01910356
IVCORR = 0 01920356
WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 01930356
0061 CONTINUE 01940356
CT007* TEST 7 ZERO PREFIXED WITH A MINUS SIGN 01950356
IVTNUM = 7 01960356
IDDVI = 0 01970356
IDAVI = IABS(-IDDVI) 01980356
IF (IDAVI - 0) 20070, 10070, 20070 01990356
10070 IVPASS = IVPASS + 1 02000356
WRITE (NUVI, 80002) IVTNUM 02010356
GO TO 0071 02020356
20070 IVFAIL = IVFAIL + 1 02030356
IVCORR = 0 02040356
WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 02050356
0071 CONTINUE 02060356
CT008* TEST 8 A POSITIVE INTEGER 02070356
IVTNUM = 8 02080356
IDBVI = 73 02090356
IDAVI = IABS(IDBVI) 02100356
IF (IDAVI - 73) 20080, 10080, 20080 02110356
10080 IVPASS = IVPASS + 1 02120356
WRITE (NUVI, 80002) IVTNUM 02130356
GO TO 0081 02140356
20080 IVFAIL = IVFAIL + 1 02150356
IVCORR = 73 02160356
WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 02170356
0081 CONTINUE 02180356
CT009* TEST 9 A NEGATIVE INTEGER 02190356
IVTNUM = 9 02200356
IDDVI = -10 02210356
IDAVI = IABS(IDDVI) 02220356
IF (IDAVI - 10) 20090, 10090, 20090 02230356
10090 IVPASS = IVPASS + 1 02240356
WRITE (NUVI, 80002) IVTNUM 02250356
GO TO 0091 02260356
20090 IVFAIL = IVFAIL + 1 02270356
IVCORR = 10 02280356
WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 02290356
0091 CONTINUE 02300356
CT010* TEST 10 ARITHMETIC EXPRESSION PRESENTED TO FUNCTION 02310356
IVTNUM = 10 02320356
IDDVI = -3 02330356
IDAVI = IABS(IDDVI ** 3) 02340356
IF (IDAVI - 27) 20100, 10100, 20100 02350356
10100 IVPASS = IVPASS + 1 02360356
WRITE (NUVI, 80002) IVTNUM 02370356
GO TO 0101 02380356
20100 IVFAIL = IVFAIL + 1 02390356
IVCORR = 27 02400356
WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 02410356
0101 CONTINUE 02420356
C***** 02430356
CBB** ********************** BBCSUM0 **********************************02440356
C**** WRITE OUT TEST SUMMARY 02450356
C**** 02460356
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02470356
WRITE (I02, 90004) 02480356
WRITE (I02, 90014) 02490356
WRITE (I02, 90004) 02500356
WRITE (I02, 90020) IVPASS 02510356
WRITE (I02, 90022) IVFAIL 02520356
WRITE (I02, 90024) IVDELE 02530356
WRITE (I02, 90026) IVINSP 02540356
WRITE (I02, 90028) IVTOTN, IVTOTL 02550356
CBE** ********************** BBCSUM0 **********************************02560356
CBB** ********************** BBCFOOT0 **********************************02570356
C**** WRITE OUT REPORT FOOTINGS 02580356
C**** 02590356
WRITE (I02,90016) ZPROG, ZPROG 02600356
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02610356
WRITE (I02,90019) 02620356
CBE** ********************** BBCFOOT0 **********************************02630356
CBB** ********************** BBCFMT0A **********************************02640356
C**** FORMATS FOR TEST DETAIL LINES 02650356
C**** 02660356
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02670356
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02680356
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02690356
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02700356
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02710356
1I6,/," ",15X,"CORRECT= " ,I6) 02720356
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02730356
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02740356
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02750356
1A21,/," ",16X,"CORRECT= " ,A21) 02760356
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02770356
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02780356
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 02790356
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 02800356
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 02810356
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 02820356
80050 FORMAT (" ",48X,A31) 02830356
CBE** ********************** BBCFMT0A **********************************02840356
CBB** ********************** BBCFMT0B **********************************02850356
C**** FORMAT STATEMENTS FOR PAGE HEADERS 02860356
C**** 02870356
90002 FORMAT ("1") 02880356
90004 FORMAT (" ") 02890356
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )02900356
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 02910356
90008 FORMAT (" ",21X,A13,A17) 02920356
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 02930356
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 02940356
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 02950356
1 7X,"REMARKS",24X) 02960356
90014 FORMAT (" ","----------------------------------------------" , 02970356
1 "---------------------------------" ) 02980356
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 02990356
C**** 03000356
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03010356
C**** 03020356
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03030356
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03040356
1 A13) 03050356
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03060356
C**** 03070356
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03080356
C**** 03090356
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03100356
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03110356
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03120356
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03130356
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03140356
CBE** ********************** BBCFMT0B **********************************03150356
C***** 03160356
C***** END OF TEST SEGMENT 156 03170356
STOP 03180356
END 03190356
03200356