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