Fortran
Intrinsiska procedurer
Sök…
Anmärkningar
Många av de tillgängliga inneboende procedurerna har gemensamma argumenttyper. Till exempel:
- ett logiskt argument
MASKsom väljer element i inputmatriser som ska behandlas - ett heltalskalarargument
KINDsom bestämmer typen av funktionsresultat - ett heltalargument
DIMför en reduktionsfunktion som styr den dimension som reduktionen utförs över
Använd PACK för att välja element som uppfyller ett villkor
Den inre pack packar en matris i en vektor och väljer element baserade på en given mask. Funktionen har två former
PACK(array, mask)
PACK(array, mask, vector)
(det vill säga vector är valfritt).
I båda fallen är array en matris och en mask av logisk typ och kan anpassas till array (antingen en skalär eller en matris med samma form).
I det första fallet är resultatet rank-1 array av typ- och typparametrar av array med antalet element som är antalet sanna element i masken.
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0)
resulterar i positive_values värden som arrayen [2, 3, 5] .
Med vector rank-1-argumentet närvarande är resultatet nu storleken på vector (som måste ha minst lika många element som det finns sanna värden i mask .
Effekten med vector är att returnera den arrayen med de initiala elementen i den arrayen som skrivs över av de maskerade elementen i array . Till exempel
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0, [10,20,30,40,50])
resulterar i positive_values [2,3,5,40,50] arrayen [2,3,5,40,50] .
Det bör noteras att, oberoende av formen av argumentet array resultatet är alltid en rang-1 matris.
Förutom att välja elementen i en matris som uppfyller ett maskeringsvillkor är det ofta användbart att bestämma de index för vilka maskeringsvillkoret uppfylls. Detta vanliga formspråk kan uttryckas som
integer, allocatable :: indices(:)
integer i
indices = PACK([(i, i=1,5)], [2, -1, 3, -2, 5]>0)
vilket resulterade i att indices är matrisen [1,3,5] .