Dyrektywa EQUIVALENCE

7
Dyrektywa EQUIVALENCE EQUIVALENCE (lista_1), (lista_2),…, (lista_n) REAL A, B, C EQUIVALENCE (B, C, A) Dyrektywa EQUIVALENCE powoduje utworzenie aliasu lub aliasów zmiennej, która jest wymieniona na liście jako pierwsza pod inną nazwą. Żaden z tych aliasów nie może być elementem obszaru wspólnego. W przypadku tablicy podaje się pierwszy z aliasowanych elementów oraz pierwszy element aliasu, co umożliwia wygodne żonglowanie kształtem tablicy lub przyporządkowanie tej samej tablicy wielu aliasów. W podanym przykładzie tworzymy aliasy zmiennej B o nazwach C i A. Operacja na którejkolwiek z tych zmiennych będzie skutkowała zmianą dwóch pozostałych. Tylko zmienna B może być elementem obszaru wspólnego.

description

Dyrektywa EQUIVALENCE. EQUIVALENCE ( lista_1 ), ( lista_2 ),…, ( lista_n ) REAL A, B, C EQUIVALENCE (B, C, A) - PowerPoint PPT Presentation

Transcript of Dyrektywa EQUIVALENCE

Page 1: Dyrektywa EQUIVALENCE

Dyrektywa EQUIVALENCE

EQUIVALENCE (lista_1), (lista_2),…, (lista_n)

REAL A, B, CEQUIVALENCE (B, C, A)

Dyrektywa EQUIVALENCE powoduje utworzenie aliasu lub aliasów zmiennej, która jest wymieniona na liście jako pierwsza pod inną nazwą. Żaden z tych aliasów nie może być elementem obszaru wspólnego. W przypadku tablicy podaje się pierwszy z aliasowanych elementów oraz pierwszy element aliasu, co umożliwia wygodne żonglowanie kształtem tablicy lub przyporządkowanie tej samej tablicy wielu aliasów.

W podanym przykładzie tworzymy aliasy zmiennej B o nazwach C i A. Operacja na którejkolwiek z tych zmiennych będzie skutkowała zmianą dwóch pozostałych. Tylko zmienna B może być elementem obszaru wspólnego.

Page 2: Dyrektywa EQUIVALENCE

Przykład bardziej zaawansowany:

COMMON /VECCOM/ X(12)DIMENSION Y(3), P(3), Q(3)EQUIVALENCE (X(4),Y(1)), (X(7),P(1)), (X(10),Q(1))

X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8) X(9) X(10) X(11) X(12)

Y(1) Y(2) Y(3) P(1) P(2) P(3) Q(1) Q(2) Q(3)

Aliasy dwuwymiarowe tablic jednowymiarowych:

DOUBLE PRECISION A1(9),B1(9),MATA(3,3),MATB(3,3)EQUIVALENCE (A1(1),MATA(1,1)),(B1(1),MATB(1,1))

Przykład zastosowaniu dyrektywy EQUIVALENCE przy inicjalizacji elementów tablic.

Page 3: Dyrektywa EQUIVALENCE

Dyrektywa INCLUDE

Dyrektywa INCLUDE służy do wstawienia do w dane miejsce programu pliku o zaspecyfikowanej nazwie. Jest ona bardzo wygodna, jeżeli program składa się z wielu segmentów, które zawierają wspólne deklaracje i dużo obszarów wspólnych.

Składnia:

INCLUDE “nazwa_pliku”

lub

INCLUDE ‘nazwa_pliku’

Przykład: Plik cluster.f oraz pliki włączane parcom.dat i sizeclust.dat

Domyślnie pliki włączane muszą być w katalogu, w którym kompilujemy o ile nazwa nie zawiera ścieżki dostępu. Można to zmienić dodając opcję –Iścieżka_dostępu do linii poleceń kompilacji.

Page 4: Dyrektywa EQUIVALENCE

Procedura GETARG i funkcja IARGC

CALL GETARG(nr_argumentu_linii_poleceń,argument)

gdzie nr_argumentu_linii_poleceń jest numerem kolejnego argumentu linii polecenia a argument jest zmienną tekstową, w której będzie zapamiętany dany argument linii polecenia. Liczba argumentów linii polecenia jest dana przez funkcję IARGC()

Procedura GETENV

CALL GETENV(klucz,wartość)

gdzie klucz jest nazwą a wartość wartością danej zmiennej środowiskowej.

Page 5: Dyrektywa EQUIVALENCE

Przykład (GETARG oraz IARGC):

program prog character*8 argument(10) liczba_argumentow=iargc() do i=1,liczba_argumentow call getarg(i,argument(i)) enddo print *,"liczba argumentow",liczba_argumentow do i=1,liczba_argumentow print *,"argument ",i,” “,argument(i) enddo stop end

Page 6: Dyrektywa EQUIVALENCE

Przykład (GETENV):

program progenv

character*16 shell

call getenv("SHELL",shell)

print *,"Uzywam powloki ",shell

stop

end

Page 7: Dyrektywa EQUIVALENCE

Procedura FDATECHARACTER*24 data_i_czas

CALL FDATE(data_i_czas)

Gdzie data_i_czas jest zmienną tekstową zawierającą datę i czas w formacie:

dzień miesiąc godzina:minuty:sekundy rok

np. Fri Dec 7 13:45:03 2007

Procedura SYSTEMCALL SYSTEM(wielkość_tekstowa)

Gdzie wielkość_tekstowa jest łańcuchen tekstowym stanowiącym polecenie systemu operacyjnego. Wywołanie procedury SYSTEM spowoduje wykonanie tego polecenia jako oddzielnego procesu.