data lista_de_variables/ lista_de valores/, ...donde los puntos suspensivos significar que el patrón puede ser repetido. Se muestra a continuación un ejemplo:
data m/10/, n/20/, x/2.5/, y/2.5/Se podría haber escrito también como:
data m,n/10,20/, x,y/2*2.5/Se podría haber hecho también lo mismo usando asignaciones
m = 10 n = 20 x = 2.5 y = 2.5La sentencia data es más compacta y por lo tanto mas conveniente. Observar la forma compacta para la asignación de valores iguales varias veces.
La sentencia data es hecha sólo una vez, exactamente antes de que la ejecución del programa inicie. Por esta razón, la sentencia data es usada principalmente en el programa principal y no en las subrutinas.
La sentencia data puede ser usada también para inicializar arreglos (vectores, matrices). El siguiente ejemplo muestra como se puede asegurar que una matriz este llena de ceros antes de iniciar la ejecución del programa:
real A(10,20) data A/200*0.0/Algunos compiladores inicializarán automáticamente los arreglos como en el ejemplo, pero no todos, por lo que si se quiere asegurar de los elementos del arreglo son cero, se deberá hacer algo como lo anterior. Por supuesto que los arreglos pueden ser inicializados con otro valor diferente de cero, o aún, inicializar los elementos individualmente, como se muestra a continuación:
data A(1,1)/ 12.5/, A(2,1)/ -33.3/, A(2,2)/ 1.0/O se pueden listar todos los elementos para arreglos pequeños como se muestra enseguida:
integer v(5) real B(2,2) data v/10,20,30,40,50/, B/1.0,-3.7,4.3,0.0/Los valores para arreglos bidimensionales serán asignados en el orden de primero columna como se acostumbra.
block data integer nmax parameter (nmax=20) real v(nmax), alpha, beta common /vector/v,alpha,beta data v/20*100.0/, alpha/3.14/, beta/2.71/ endTal como en la sentencia data, el block data es ejecutado antes de que la ejecución del programa inicie. La posición de la "subrutina" block data en el código fuente es irrelevante (siempre y cuando no este anidada en el progrma principal o un subprograma).