UNIVERSITÉ CATHOLIQUE DE LOUVAIN Centre de Calcul FFFFFF 000000 RRRRRR TTTTTTT RRRRRR AAAAAA N N F 0 0 R R T R R A A N N F 0 0 R R T R R A A NN N FFFF 0 0 RRRRR T RRRRR AAAAAA N N N F 0 0 R R T R R A A N N N F 0 0 R R T R R A A N NN F 000000 R R T R R A A N N I V V I V V I V V I V V I V V I V CONFIDENTIAL REMARKS r. david j.-p. raucq RAPPORT. N° 3 JANVIER 70 de Croylaan 52, Heverlee ----------------------------------------------------------------------- NOUS REMERCIONS MONSIEUR LE PROFESSEUR J. MEINGUET ET MONSIEUR B. DANLOY DONT LES SUGGESTIONS NOUS ONT ETE PRECIEUSES ----------------------------------------------------------------------- BEFORE READING THIS REPORT, YOU SHOULD BE OUITE FAMILIAR WITH THE FORTRAN IV G LANGUAGE (AS DE- FINED IN THE PUBLICATION IBM SYSTEM/360 FORTRAN IV LANGUAGE FORM C28-6515 TO WHICH WE SHALL RE- FER lN THE TEXT BY THE NOTATION (F)). WE HAVE TESTED THE FOLLOWING PROGRAMS WITH THE COMPILER (VERSION 3,LEVEL 1) OF THE MODEL 44 PS AND THE COMPILER (G LEVEL l,MOD 3) OF THE O.S.. ONLY ONE DIFFERENCE WAS DETECTED (SEE PAGE 8 BIS). ------------------------------------------------------------------------ 1 C 'SYMBOLIC NAME - FROM 1 THROUGH 6 ALPHAMERIC (I.E. NUMERIC, C 0 THROUGH 9, OR ALPHABETIC, A THROUGH Z AND $ ) CHARACTERS, C THE FIRST OF WHICH MUST BE ALPHABETIC. NO SPECIAL CHARACTERS C EXCEPT BLANKS ARE PERMITTED.' (SEE (F), PAGE 12) C C FJ=6.0 GO TO 1 C ... 1 DO 3 I=FJ GO TO1=3.0 DO 3 1=1,2 3 WRITE(3,lOO) DO 3 I, GO TO1 100 FORMAT(1H ,2E15.8) END * * * * * SCALAR MAP SYMBOL LOCATION SYMBOL LOCATION SYMBOL LOCATION FJ 000004 DO3I 000008 GOTO1 OOOODC * * * * * 0.60000000E 01 0.30000000E 01 0.60000000E 01 0.30000000E 01 * * * * * ----------------------------------------------------------------------- 2 C 'A FUNCTION SUBPROGRAM NAME MUST ALSO BE A VARIABLE NAME C IN THE FUNCTION SUBPROGRAM'. (SEE (F),PAGE 12) C SEE ALSO PAGE 7 8IS. Y=FF(3.0) WRITE (3,100) Y 100 FORMAT(1H ,F8.2) END * * * * * SCALAR MAP SYMBOL LOCATION SYMBOL... Y 000004 SUBPROGRAMS CALLED SYMBOL LOCATION SYMBOL LOCATION FF 000D8 IBCOM# 000DC * * * * * FUNCTION FF(X) FF=X FF=FF+1.0 C -- RETURN END * * * * * EQUIVALENCE DATA MAP SYMBOL LOCATION SYMBOL LOCATION FF 0000D4 SCALAR MAP SYMBOL LOCATION SYMBOL LOCATION X 0000D8 * * * * * 4.00 * * * * * ----------------------------------------------------------------------- 3 C 'SYMBOLIC NAMES ARE USED lN A MAIN PROGRAM (OR A SUBPROGPAM) C TO IDENTIFY ELEMENTS IN THE FOLLOWING CLASSES. C - ARRAYS C - VARIABLES C - FUNCTION SUBPROGRAMS C - ... C SYMBOLIC NAMES MUST BE UNIQUE WITHIN A CLASS lN A (SUB)PROGRAM C AND CAN IDENTIFY ELEMENTS OF ONLY ONE CLASS.' (SEE (F),PAGE 12). C C SIN=l. COS=2. Y =SIN(SIN) $ NA131 SYNTAX Z =COS(COS) $ NA131 SYNTAX C C ... C END * * * * * SCALAR MAP SYMBOL LOCATION SYMBOL LOCATION ... SIN 0000D4 COS 0000D8 ... SUBPROGRAMS CALLED SYMBOL LOCATION SYMBOL LOCATION ... IBCOM# 0000E8 * * * * * ----------------------------------------------------------------------- 4 C C SEE ALSO PAGE 3 C COS=2.0 Y=SIN(SIN) $ NA07I ID CONFLICT SIN=l.0 $ NA07I ID CONFLICT Z=COS(COS) $ NA13I SYNTAX WRITE(3,100) SIN,COS,Y,Z $ NA07I ID CONFLICT 100 FORMAT(1H ,4F8.5) END * * * * * SCALAR MAP SYMBOL LOCATION SYMBOL LOCATION SYMBOL LOCATION COS 0000D4 Y 0000D8 Z 0000DC SUBPROGRAMS CALLED SYMBOL LOCATION SYMBOL LOCATION SYMBOL LOCATION IBCOM# 0000E4 SIN 0000E8 * * * * * ----------------------------------------------------------------------- 5 C C DIMENSION SIN(10) SIN(1)=2. X=3.14159/2.0 DO 1 I=1,10 1 SIN(I)=SIN(X)+I WRITE(3,100) (SIN(I),I=1,10) 100 FORMAT(1H ,10F6.2) END * * * * * ARRAY MAP SYMBOL LOCATION SYMBOL LOCATION ... SIN 0000E4 SUBPROGRAMS CALLED SYMBOL LOCATION SYMBOL LOCATION ... IBCOM# 00010C * * * * * 3.00 5.00 6.00 7.00 8.00 9.00 10.00 11.00 12.00 13.00 * * * * * ----------------------------------------------------------------------- 6 C C 'THE FOLLOWING RULES APPLY TO THE CONSTRUCTION OF SUBSCRIPT C QUANTITIES. C C ... C C -SUBSCRIPT QUANTITIES MAY CONTAIN SUBSCRIPTED NAMES. C C -MIXED MODE FXPRESSIONS (INTEGER AND REAL ONLY) WITHIN SUBSCRIPT C QUANTITIES ARE EVALUATED ACCORDING TO NORMAL FORTRAN RULES. C IF THE EVALUATED EXPRESSION IS REAL, IT IS CONVERTED TO C INTEGER. C C ... , (SEE (F).PAGE 17). C C DIMENSION SIN(10),COS(10) DO 1 I=1,10 SIN(I)=I 1 COS(I)=I DO 2 I=1,9 IP1=I+1 SIN(IP1)=SIN(SIN(IP1 ))+I COS(IP1)=COS(COS(IP1 ))+I 2 WRITE(3,100) SIN(IP1),COS(IP1) DO 3 I=1,5 SIN(2*I)=2.* SIN(I)*COS(I) 3 WRITE(3,l00) SIN(2*I),SIN(l.2*FLOAT(I)) C SEE ALSO PAGE 14 WRITE(3,100) SIN(-6.3),SIN(-8.7) 100 FORMAT(1H , 2E16.4) END * * * * * 0.3000E 01 0.3000E 01 0.5000E 01 0.5000E 01 0.7000E 01 0.7000E 01 0.9000E 01 0.9000E 01 0.llOOE 02 0.llOOE 02 0.1300E 02 0.1300E 02 0.1500E 02 0.1500E 02 0.1700E 02 0.1700E 02 0.1900E 02 0.1900E 02 0.2000E 01 0.lOOOE 01 0.1200E 02 0.2000E 01 0.5000E 02 0.5000E 01 0.1680E 03 0.1200E 02 0.1620E 03 0.9000E 01 0.5OOOE 02 0.1680E 03 * * * * * ----------------------------------------------------------------------- 7 C A CONSTANT SHOULD NOT BE SPECIFIED AS AN ACTUAL ARGUMENT C UNLESS THE PROGRAMMER IS CERTAIN THAT THE C CORRESPONDING DUMMY ARGUMENT IS NOT ASSIGNED A VALUE IN C THE SUBPROGRAM.' (SEE (F),PAGE 88) C I=1 A=6.5 CALL MOD(I,1,A,6.5) WRITE(3,1 ) I,A 1 FORMAT(' I,A=',I3,F5.1) C J=1 B=6.5 C WRITE(3,2) J,B 2 FORMAT(' J,B=',I3,F5.1) END SUBROUTINE MOD(K,L,C,D) L=2 D=8.3 K=K+L C=C+D RETURN END * * * * * I,A= 3 14.8 J,B= 2 8.3 * * * * * ----------------------------------------------------------------------- 7 BIS C SEE ALSO PAGES 2 AND 7. C Y=FF(3.0) A=3.0 WRITE(3,100) Y,A 100 FORMAT(1H ,2F8.2) Y=GG(4.0)+4.0 A=4.0 WRITE(3,100) Y,A Y=7.0+GG(7.0) A=7.0 WRITE(3,100) Y,A END FUNCTION FF(FF) WRITE(3,100) FF FF=FF+1.0 WRITE(3,100) FF 100 FORMAT(1H ,10X,F8.2) RETURN END * * * * * EQUIVALENCE DATA MAP SYMBOL LOCATION SYMBOL... FF 0000D8 SCALAR MAP SYMBOL LOCATION SYMBOL... FF 0000DC * * * * * FUNCTION GG(GG) WRITE(3,100) GG 100 FORMAT(1H ,10X,F8.2) GG=GG+2.0 WRITE(3,100) GG GG=GG+3.0 WRITE(3,100) GG RETURN END * * * * * EQUIVALENCE DATA MAP SYMBOL LOCATION SYMBOL... GG 0000D8 SCALAR MAP SYMBOL LOCATION SYMBOL... GG 0000DC * * * * * 3.00 4.00 4.00 4.00 4.00 6.00 9.00 18.00 9.00 7.00 9.00 12.00 24.00 12.00 * * * * * ----------------------------------------------------------------------- 8 C SEE ALSO PAGE 7 AND ... C 'INTEGER VARIABLES lN THE DIMENSION STATEMENT THAT PROVIDE C DIMENSION INFORMATION lN A FUNCTION OR SUBROUTINE C SUBPROGRAM MUST NOT BE REDEFINED WITHIN THE SUBPROGRAM. C I.E. THEY MUST NOT APPEAR ON THE LEFT SIDE OF AN EQUAL SIGN.' C (SEE (F), PAGE 93) DIMENSION K(3,5),M(5,3) L=0 DO 1 I=1,3 DO 1 J=1,5 L=L+1 M(J,I)=L 1 K(I,J)=L DO 2 I=1,3 2 WRITE(3,3) (I,J,K(I,J),J=1,5) 3 FORMAT(' ',5(' K(',I1,',',I1,')=',I3)) DO 5 I=1,5 5 WRITE(3,4) (I,J,M(I,J),J=1,3) C CALL TRANSF(K, 3, 5, M) C WRITE(3,8) 8 FORMAT (1H ) DO 6 J=1,5 6 WRITE(3,4) ( J,I,M(J,I),I=1,3) 4 FORMAT(' ',3(' M(',I1,',',I1,')=',I3)) WRITE(3,8) N=4+1 DO 7 J=l,N 7 WRITE(3,4) ( J,I,M(J,I),I=1,3) END SUBROUTINE TRANSF(NK,N3,N5,NM) DIMENSION NK(N5,N3),NM(N3,N5) C N5=N5-2 C WRITE(3,1) N3,N5 1 FORMAT('0 N3,N5 =',2I3 / ) DO 2 I=1,N5 DO 2 J=1,N3 2 NM(I,J)= NK(J,I) WRITE(3,3) NK WRITE(3,3) NM 3 FORMAT(1H ,11I5) RETURN END * * * * * ------------------------------------------------------------------------ 8 BIS 44 PS K(1,1)= 1 K(1,2)= 2 K(1,3)= 3 K(1,4)= 4 K(1,5)= 5 K(2,1)= 6 K(2,2)= 7 K(2,3)= 8 K(2,4)= 9 K(2,5)= 10 K(3,1)= 11 K(3,2)= 12 K(3,3)= 13 K(3,4)= 14 K(3,5)= 15 M(1,1)= 1 M(1,2)= 6 M(1,3)= 11 M(2,1)= 2 M(2,2)= 7 M(2,3)= 12 M(3,1)= 3 M(3,2)= 8 M(3,3)= 13 M(4,1)= 4 M(4,2)= 9 M(4,3)= 14 M(5,1)= 5 M(5,2)= 10 M(5,3)= 15 N3,N5 = 3 3 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 1 12 9 6 3 14 11 8 5 10 11 12 13 14 15 M(1,1)= 1 M(1,2)= 14 M(1,3)= 11 M(2,1)= 12 M(2,2)= 11 M(2,3)= 12 M(3,1)= 9 M(3,2)= 8 M(3,3)= 13 M(1,1)= 1 M(1,2)= 14 M(1,3)= 11 M(2,1)= 12 M(2,2)= 11 M(2,3)= 12 M(3,1)= 9 M(3,2)= 8 M(3,3)= 13 M(4,1)= 6 M(4,2)= 5 M(4,3)= 14 M(5,1)= 3 M(5,2)= 10 M(5,3)= 15 OS K(1,1)= 1 K(1,2)= 2 K(1,3)= 3 K(1,4)= 4 K(1,5)= 5 K(2,1)= 6 K(2,2)= 7 K(2,3)= 8 K(2,4)= 9 K(2,5)= 10 K(3,1)= 11 K(3,2)= 12 K(3,3)= 13 K(3,4)= 14 K(3,5)= 15 M(1,1)= 1 M(1,2)= 6 M(1,3)= 11 M(2,1)= 2 M(2,2)= 7 M(2,3)= 12 M(3,1)= 3 M(3,2)= 8 M(3,3)= 13 M(4,1)= 4 M(4,2)= 9 M(4,3)= 14 M(5,1)= 5 M(5,2)= 10 M(5,3)= 15 N3,N5 = 3 3 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 1 12 9 6 3 14 11 8 5 10 11 12 13 14 15 M(1,1)= 10 M(1,2)= 12 M(1,3)= 3 M(2,1)= 15 M(2,2)= 9 M(2,3)= 14 M(3,1)= 1 M(3,2)= 6 M(3,3)= 11 M(4,1)= 12 M(4,2)= 3 M(4,3)= 8 M(5,1)= 9 M(5,2)= 14 M(5,3)= 5 M(1,1)= 10 M(1,2)= 12 M(1,3)= 3 M(2,1)= 15 M(2,2)= 9 M(2,3)= 14 M(3,1)= 1 M(3,2)= 6 M(3,3)= 11 M(4,1)= 12 M(4,2)= 3 M(4,3)= 8 M(5,1)= 9 M(5,2)= 14 M(5,3)= 5 * * * * * ------------------------------------------------------------------------ 9 C 'DUMMY ARGUMENTS OF A SURPROGRAM MUST CORRESPOND IN C NUMBER, ORDER, TYPE, AND LENGTH TO THE ACTUAL ARGUMENTS.' C (SEE (F), PAGE 87) C C REAL*8 A,B,C,D C ****** A=1.0 B=1234.0 C=123456.0 D=41.0 CALL INVERS(B,A,C,D) WRITE(3,1) A,B,C,D A=1.0625 B=2.0 C=3.25 D=4.123456789 CALL INVERS( A,B,C,D) WRITE(3,1) A,B,C,D 1 FORMAT(' A,B,C,D=', F16.9,F13.9,F12.9,F15.9) END SUBROUTINE INVERS(K,L,M,N) INTEGER*4 K,L,M,N,NAUX C ********* C 4 NAUX=N N=K K=NAUX NAUX=M M=L L=NAUX RETURN END * * * * * A,B,C,D=123456.000000000 41.000000000 1.000000000 1234.000000000 A,B,C,D= 4.123456001 3.250000000 2.000000000 1.062500788 * * * * * ------------------------------------------------------------------------ 10 C C 'BY VALUE AND BY LOCATION' C COMMON Al A1=10.0 CALL SUBVAL(A1,RES) WRITE(3,100) A1,RES 100 FORMAT(1H ,2E15.8) A1=10.0 CALL SUBVAL(A1+2.0,RES) WRITE(3,100) A1,RES A1=10.0 CALL SUBLOC(A1,RES) WRITE(3,100) A1,RES A1=10.0 CALL SUBLOC(A1+2.0,RES) WRITE(3,100) A1,RES END SUBROUTINE SUBVAL(A,R) C C 'IN REFERENCE BY VALUE,THE DUMMY ARGUMENT IS ASSIGNED C STORAGE LOCATION lN THE SUBPROGRAM TO WHICH THE VALUE OF C THE ACTUAL ARGUMENT IS BROUGHT FROM THE CALLING PROGRAM AT C EXECUTION TIME. DURING EXECUTION,ALL INTERMEDIATF VALUES C ARE STORED lN THIS LOCATION. UPON RETURN TO THE CALLING C PROGRAM,THE FINAL VALUE IS TRANSMITTED FROM THE DUMMY C ********************************************* C ARGUMENT TO THE ACTUAL ARGUMENT.' (SEE (F). PAGE 88) C ******************************* COMMON B B=S+1.0 R=A RETURN END SUBROUTINE SUBLOC(/A/,R) C C 'IN REFERENCE BY LOCATION,NO STORAGE IS ASSIGNED TO THE C DUMMY ARGUMENT AND DURING EXECUTION OF THE SUBPROGRAM, C ALL INTERMEDIATE VALUES AND THE FINAL VALUE ARE REFERENCED C USING THE LOCATION OF THE ACTUAL ARGUMENT.'(SEE (F),PAGE 89) C COMMON B B=B+1.0 R=A RETURN END * * * * * O.1OOOOOOOE 02 0.10000000E 02 O.11000000E 02 0.12000000E 02 O.11000000E 02 0.11000000E 02 O.11000000E 02 0.12000000E 02 * * * * * ------------------------------------------------------------------------ 11 C C ' MULTIPLE ENTRY INTO A SUBPROGRAM ' C NU=10 NARG=2 CALL TEST(NARG) CALL TEST1(NU) WRITE(3,100) NARG 100 FORMAT(' VALUE OF NARG lN THE MAIN',I11) END SUBROUTINE TEST(NARG) C C 'ENTRY INTO A SUBPROGRAM INITIALIZES THE DUMMY ARGUMENTS OF C THE REFERENCED ENTRY STATEMENT. THUS ALL APPEARANCES OF C THESE ARGUMENTS IN THE WHOLE SURPROGRAM ARE INITIALIZED. C ARGUMENTS THAT WERE REFERENCED BY VALUE AT SOME PREVIOUS C USE OF THE SUBPROGRAM NEED NOT APPEAR IN THE ARGUMENT LIST C OF THE ENTRY STATEMENT.' (SEE (F), PAGE 90). C RETURN ENTRY TEST1(NU) NARG=NARG*NU WRITE(3,100) NARG 100 FORMAT(' VALUE OF NARG IN THE SUBROUTINE',I5) RETURN END * * * * * VALUE OF NARG IN THE SUBROUTINE 20 VALUE OF NARG IN THE MAIN 2 * * * * * ------------------------------------------------------------------------ 12 DIMENSION N(100) DO 1 I=1,100 1 N(I)=I NSOM=0 ISUP=100 C C C 2 IF(NF(ISUP,N,NSOM))3,3,2 C ^ | C | | C ------------------------- C WRITE(3,100) NSOM 100 FORMAT(' SOMME= ',I5) END FUNCTION NF(ISUP,N,NSOM) DIMENSION N(1) NSOM=NSOM+N(ISUP) ISUP=ISUP-1 NF=ISUP RETURN END * * * * * SOMME= 5050 * * * * * ------------------------------------------------------------------------ 13 C ' DO STATEMENT C C THE INDEXING PARAMETERS OF A DO STATEMENT C ARE EITHER UNSIGNED INTEGER CONSTANTS GREATER THAN C ZERO OR UNSIGNED NONSUBSCRIPTED INTEGEP VARIABLES WHOSE C VALUE IS GREATER THAN ZERO ' (SEE (F), PAGE 33). C ***************** C C DO 1 I=-5,10 $ NA13I SYNTAX 1 WRITE(3,100) I 100 FORMAT(1H ,I5) END * * * * * C C BUT... C L=-10 DO 1 I=L,10 1 WRITE(3,100) I 100 FORMAT(1H ,I10) END * * * * * -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 * * * * * ------------------------------------------------------------------------ 14 DIMENSION N(10),M(20) EQUIVALENCE (M(11),N(1)) C ************ IDX=-9 DO 1 I=IDX,10 N(I)=5*1+3 1 WRITE(3,100) I,N(I) 100 FORMAT(1H ,2I6) K=-9 WRITE(3,101) (N(J),J=K,10) 101 FORMAT(1H ,10I6) C C 'THE EVALUATED RESULT OF A SUBSCRIPT QUANTITY SHOULD C ALWAYS BE GREATER THAN ZERO AND LESS THAN OR EQUAL C TO THE SIZE OF THE CORRESPONDING DIMENSION'. (SEE (F),PAGE 17) C WRITE(3,101)N(-9),N(-8),N(-7),N(-6),N(-5),N(-4),N(-3),N(-2) WRITE(3,101)N{-1),N(0),(N(J),J=1,10) END * * * * * EQUIVALENCE DATA MAP SYMBOL LOCATION SYMBOL LOCATION SYMBOL... M 0000E8 N 000110 * * * * * -9 -42 -8 -37 -7 -32 -6 -27 -5 -22 -4 -17 -3 -12 -2 -7 -1 -2 0 3 1 8 2 13 3 18 4 23 5 28 6 33 7 38 8 43 9 48 10 53 -42 -37 -32 -27 -22 -17 -12 -7 -2 3 8 13 18 23 28 33 38 43 48 53 48 43 38 33 28 23 18 13 8 3 8 13 18 23 28 33 38 43 48 53 * * * * * ------------------------------------------------------------------------ 15 C 'THE ARRAY SIZE OF A DUMMY ARGUMENT MUST CORRESPOND TO C THE ARRAY SIZE OF THE ACTUAL ARGUMENT EXCEPT WHEN THE C ARRAYS ARE ONE-DIMENSIONAL( lN WHICH CASE? THE ACTUAL ARGUMENT C ARRAY SIZE CAN BE LESS THAN OR EQUAL TO THE DUMMY ARGUMENT C ARRAY SIZE.)' (SEE (F), PAGE 87), C C DIMENSION NA(5,10) DO 1 I=1,5 DO 1 J=1,10 1 NA(I,J)=(I-l)*10+J WRITE(3,100) ((NA(I,J),J=1,10),I=1,5) 100 FORMAT(1H ,10I5) WRITE(3,100) CALL MAT(NA) WRITE(3,100) CALL MAT1(NA) END SUBROUTINE MAT(NB) DIMENSION NB(10,5) WRITE(3,100) ((NB(I,J),J=1,5),I=1,10) 100 FORMAT(1H ,5I5) RETURN END SUBROUTINE MAT1(NB) DIMENSION NB(1) WRITE(3,100) (NB(I),I=1,50) 100 FORMAT(1H ,10I5) RETURN END * * * * * 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 1 11 21 31 41 2 12 22 32 42 3 13 23 33 43 4 14 24 34 44 5 15 25 35 45 6 16 26 36 46 7 17 27 37 47 8 18 28 38 48 9 19 29 39 49 10 20 30 40 50 * * * * * ------------------------------------------------------------------------ 16 C LITERAL CONSTANTS. EXAMPLE OF USE. C LOGICAL*1 L1 INTEGER*2 L2 LOGICAL*4 L4 INTEGER*4 I4 REAL*4 R4 REAL*8 R8 COMPLEX*8 C8 COMPLEX*16 C16 CALL ALPHA1('*',L1) CALL ALPHA2('AB',I2) CALL ALPHA4('CDEF',L4) CALL ALPHA4('GHIJ',I4) CALL ALPHA4('KLMN',R4) CALL ALPHA8('OPQRSTUV',R8) CALL ALPHA8('XYZ=,$.-',C8) CALL ALPH16( '123456789+(*)/**',C16) WRITE(3,101) L1,I2,L4,I4,R4,R8,C8,C16 101 FORMAT(1H ,A1,A2,3A4,2A8,A16) WRITE(3,102) (L1,I=1,47> 102 FORMAT(1H ,47A1 ) WRITE(3,100) L1,I2,L4,I4,R4,R8,C8,C16 100 FORMAT(1H ,A1,A2,3A4,A8, 2A4, 2A8 ) END SUBROUTINE ALPHA1(A,B) LOGICAL*1 A,B B=A RETURN END SUBROUTINE ALPHA2(A,B) INTEGER*2 A,B B=A RETURN END SUBROUTINE ALPHA4(A,B) INTEGER*4 A,B B=A RETURN END SUBROUTINE ALPHA8(A,B) REAL*8 A,B B=A RETURN END SUBROUTINE ALPH16(A,B) COMPLEX*16 A,B B=A RETURN END * * * * * *ABCDEFGHIJKLMNOPQRSTUV XYZ= ,$.- 19+ *********************************************** *ABCDEFGHIJKLMNOPQRSTUVXYZ=,$.-123456789+(*>/** ------------------------------------------------------------------------ 17 C C THE HIERARCHY OF OPERATIONS lN LOGICAL EXPRESSIONS C LOGICAL*l NOT/.TRUE./.AND/.FALSE./.OR/.TRUE./ GT=6.0 GE=4.3 LT=603 LE=-72 EQ=6.4 NE=12 IF(LT.LE.EQ.OR..NOT.NOT.OR.AND.OR.LE.EQ.NE.AND.AND.OR.NOT.OR.NE. 1 GT.GE.AND.GT.GE.LT.OR.NOT.AND..NOT.EQ.EQ.NE) GO TO 1 WRITE(3,2) 2 FORMAT('0FALSE') GO TO 3 1 WRITE(3,4) 4 FORMAT('0TRUE') 3 CONTINUE END * * * * * TRUE * * * * * ------------------------------------------------------------------------ 18 C C 'FORMAT STATEMENTS AT OBJECT TIME'. C DIMENSION FORMA(16) REAL*8 TAYLOR/ZE3CIC9D3D3C5E4DQ/ REAL*8 RICH/Z40D9C9C3C8C54040/ REAL*4 MY/ZD4D6D540/,IS/Z40C5E2E3/ LOGICAL*1 A/'A'/,H/'H'/,PAROUV/'('/,PARFER/')'/,VIRGUL/','/, 1 UN/'1'/,DEUX/'2'/,QUATRE/'4'/,HUIT/'8'/,ZERO/'0'/ LOGICAL*1 BLANC/' '/,ASTERX/'*'/ LOGICAL*1 FORMA FORMA( 1)=PAROUV FORMA( 2)=UN FORMA( 3)=H FORMA( 4)=BLANC FORMA( 5)=VIRGUL FORMA( 6)=BLANC FORMA( 7)=HUIT FORMA( 8)=PAROUV FORMA( 9)=QUATRE FORMA(10)=H FORMA(11)=BLANC FORMA(12)=BLANC FORMA(13)=BLANC FORMA(14)=ASTERX FORMA(15)=PARFER FORMA(16)=PARFER WRITE(3,FORMA) FORMA( 4)=ZERO FORMA( 6)=DEUX FORMA( 7)=PAROUV FORMA( 8)=A FORMA(lO)=VIRGUL FORMA(11)=A FORMA(12)=HUIT FORMA(13)=PARFER FORMA(14)=PARFER FORMA(15)=BLANC FORMA(16)=BLANC WRITE(3,FORMA) MY,TAYLOR,IS,RICH FORMA( 9)=HUIT WRITE(3,FORMA) MY,TAYLOR,IS,RICH END * * * * * * * * * * * * * MON TAILLEUR EST RICHE MON TAILLEUR EST RICHE * * * * *