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.