![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Next: 3.2 Declaration of the super-array
Up: 3 Dynamic arrays
Prev: 3 Dynamic arrays
Index
Contents
A program consisting essentially of three parts is presented in this example.
PROGRAM MODUXX
PARAMETER (LM = 2 000 000)
COMMON M(LM)
CALL INITIS(M, LM, 0, 0)
CALL MODUL1(M)
CALL MODUL2(M, M, M)
CALL IMATAB(M)
END
SUBROUTINE MODUL1(M)
INTEGER M(*)
CALL READRE(1, 'T1', IAT1, 100, M, ICODE)
CALL READRE(2, 'T2', IAT2, 100, M, ICODE)
NTYTAB = IINFO('REEL2')
CALL TYPMOT(NTYTAB, NBREMO)
CALL READRE(NTYTAB, 'T3', IAT3, 100*NBREMO, M, ICODE)
CALL ALGO(M(IAT1), M(IAT2), M(IAT3))
END
SUBROUTINE ALGO(T1, T2, T3)
INTEGER T1(100)
REAL T2(100)
DOUBLE PRECISION T3(100)
DO 100 I = 1, 100
T1(I) = 1
T2(I) = 2.
T3(I) = 3.D0
100 CONTINUE
END
(The programming shown below is not advisable)
SUBROUTINE MODUL2(M, XM, DM)
INTEGER M(*)
REAL XM(*)
DOUBLE PRECISION DM(*)
CALL READRE(1, 'T4', IAT4, 100, M, ICODE)
CALL READRE(2, 'T5', IAT5, 100, M, ICODE)
NTYTAB = IINFO('REEL2')
CALL TYPMOT(NTYTAB, NBREMO)
CALL READRE(NTYTAB, 'T6', IAT6, 100*NBREMO, M, ICODE)
DO 100 I = 1, 100
M( IAT4-1 + I) = 4
XM( IAT5-1 + I) = 5.
DM((IAT6-1)/NBREMO + I) = 6.D0
100 CONTINUE
END
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ OUTPUT DYNAMIC ALLOCATION ++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LONGUEUR IS THE NUMBER OF WORDS REQUESTED ADRESSE IS THE RETURN ADDRESS IAMARQUE IS THE ADDRESS OF THE ARRAY DESCRIBER NB MOTS IS THE NUMBER OF WORDS ACTUALLY USED THE LAST WORDS USED IN THE SUPER ARRAY IS : 829 -------------------------------------------------------------------- | SPACE | TYPE | LONGUEUR | ADRESSE | IAMARQUE | NB MOTS | NOM -------------------------------------------------------------------- | OCCUPIED | 1 | 100 | 9 | 5 | 103 | T1 | OCCUPIED | 2 | 100 | 113 | 109 | 103 | T2 | OCCUPIED | 5 | 200 | 217 | 213 | 203 | T3 | OCCUPIED | 1 | 100 | 421 | 417 | 103 | T4 | OCCUPIED | 2 | 100 | 525 | 521 | 103 | T5 | OCCUPIED | 5 | 200 | 629 | 625 | 203 | T6 | FREE | .... | ........ | ........ | 829 | 1999171 | .... -------------------------------------------------------------------- | SPACE | TYPE | LONGUEUR | ADRESSE | IAMARQUE | NB MOTS | NOM --------------------------------------------------------------------
The above example illustrates a number of points: the declaration of the super-array, the dynamic arrays management utilities, the programming employing these arrays, and problems due to double precision real.