2.4 Fortran 66

ASA X3.9-1966

Desenvolvido pela American Standards Association (ASA), com patrocínio da Business Equipment Manufacturers Association (BEMA), aprovado em março de 1966 e publicado como ASA X3.9-1966, o American Standard Fortran, informalmente conhecido como FORTRAN 66, foi o primeiro padrão estabelecido para linguagem de programação de computadores (nota). Como o padrão foi fortemente baseado no Fortran IV, muitos continuaram chamando a linguagem de Fortran IV, em vez de Fortran 66.

Objetivo:

  • Promover um alto grau de intercambialidade dos programas escritos na linguagem Fortran em diversos sistemas de processamento automático de dados, uma vez que, na época, por falta de um padrão oficial, cada fabricante tinha sua própria implementação da linguagem. (O padrão não impediu que cada fabricante introduzisse suas próprias extensões da linguagem, o que levou a novas versões do padrão.)

Definições:

  • O programa principal é um conjunto de declarações e comentários não contendo as declarações FUNCTION, SUBROUTINE ou BLOCK DATA;
  • Um subprograma é semelhante ao programa principal, mas tendo como cabeçalho as declarações BLOCK DATA, FUNCTION ou SUBROUTINE;
  • Um subprograma iniciado pela declaração BLOCK DATA é chamado subprograma de especificação;
  • Um subprograma iniciado pela declaração FUNCTION ou SUBROUTINE é chamado de subprograma de procedimento.

Forma do programa:

  • Toda unidade de programa é construída com caracteres agrupados em linhas e instruções, sendo utilizados os seguintes caracteres: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, e:

    Caractere Nome
    Espaço
    = Igual
    + Mais
    - Menos
    * Asterisco
    / Barra
    ( Abre parenteses
    ) Fecha parenteses
    , Vírgula
    . Ponto decimal
    $ Cifrão
  • Um dígito octal é um dos caracteres 0, 1, 2, 3, 4, 5, 6 e 7, usados apenas nas declarações STOP e PAUSE.

  • As linhas contém até 72 caracteres, sendo que a posição do caractere na linha é chamada de coluna (os caracteres presentes nas colunas 73 em diante são ignorados);

  • A letra C presente na coluna 1 da linha especifica que esta linha é uma linha de comentário;

  • A linha final é uma linha contendo espaços nas colunas de 1 a 6 e os caracteres E, N e D, nessa ordem, entre as colunas 7 e 72;

  • Uma linha inicial é uma linha que não é nem uma linha de comentário nem uma linha final, contendo o dígito 0 ou um espaço em branco na coluna 6, enquanto as colunas de 1 a 5 contém o rótulo da declaração ou estão em branco;

  • Uma linha de continuação contém um caractere diferente de 0 ou espaço na coluna 6 e não contém o caractere C na coluna 1;

  • Uma declaração consiste de uma linha inicial seguida por até 19 linhas de continuação (até 5 linhas de continuação na versão básica do padrão). A declaração é escrita nas colunas 7 a 72 das linhas;

  • Um rótulo de declaração consiste de 1 a 5 dígitos colocados nas colunas de 1 a 5. O valor do rótulo em si não tem importância, mas deve ser maior que zero e deve ser único no programa;

  • Os nomes simbólicos são formados por 1 a 6 caracteres alfanuméricos (até 5 caracteres alfanuméricos na versão básica do padrão), sendo que o primeiro caractere deve ser uma letra.

Tipos de dados:

São definidos 6 tipos de dados:

  • Inteiro: representação exata de um valor inteiro, podendo assumir um valor positivo, negativo ou zero;
  • Real: representação aproximada do valor de um número real, podendo assumir um valor positivo, negativo ou zero;
  • Precisão dupla: representação aproximada do valor de um número real, podendo assumir um valor positivo, negativo ou zero. A aproximação é superior a do tipo real;
  • Complexo: representação aproximada do valor de um número complexo, na forma de um par ordenado de dados do tipo real;
  • Lógico: Só pode assumir os valores verdadeiro ou falso;
  • Hollerith: uma cadeia de caracteres contendo caracteres que podem ser representados no processador, sendo o espaço um caractere válido.

Expressões:

  • Aritméticas: Formada por operadores e elementos aritméticos, dos tipos inteiro, real, precisão dupla e complexo.

    Caractere Nome
    + Adição, valor positivo
    - Subtração, valor negativo
    * Multiplicação
    / Divisão
    ** Exponenciação
  • Relacionais: formadas por duas expressões aritméticas separadas por um operador relacional, tendo como resultado falso ou verdadeiro.

    Operador Significando
    .LT. Menor que
    .LE. Menor que ou igual
    .EQ. Igual a
    .NE. Não igual a
    .GT. Maior que
    .GE. Maior que ou igual
  • Lógicas: Formada por operadores e elementos lógicos, tendo como resultado falso ou verdadeiro.

    Operador Significando
    .OR. Disjunção lógica
    .AND. Conjunção lógica
    .NOT. Negação lógica

Declarações:

As declarações no Fortran estão divididas em duas grandes categorias: executáveis e não executáveis. As declarações executáveis especificam uma ação para o programa, enquanto as declarações não executáveis descrevem a utilização do programa, as características dos operandos, informações de edição, declarações de função ou arranjo de dados.

Os elementos sintáticos de uma declaração são os nomes e os operadores. Os nomes são usados para referenciar os objetos, como dados ou procedimentos. Os operadores, incluindo verbos no modo imperativo, especificam uma ação sobre os objetos nomeados.

Declarações executáveis:

  • Atribuição
    • Aritmética
    • Lógica
    • GO TO atribuído
  • Controle
    • GO TO
    • IF aritmético
    • IF lógico
    • CALL
    • RETURN
    • CONTINUE
    • DO
  • Entrada e saída
    • READ
    • WRITE
    • REWIND
    • BACKSPACE
    • ENDFILE

Declarações não executáveis:

  • Especificação
    • DIMENSION
    • COMMON
    • EQUIVALENCE
    • EXTERNAL
    • Tipo
      • INTEGER
      • REAL
      • DOUBLE PRECISION
      • COMPLEX
      • LOGICAL
  • Inicialização de dados
    • DATA
  • FORMAT
    • F, E, G, D, I, L, A, H e X
  • Definição de função
  • Subprograma

Exemplo:

C     FUNCAO PARA CALCULAR A AREA DO TRIANGULO
      REAL FUNCTION AREA (AX, AY, BX, BY, CX, CY)
           REAL AX, AY, BX, BY, CX, CY
           AREA = ABS((AX*(BY-CY)+BX*(CY-AY)+CX*(AY-BY))/2.0)
      RETURN
      END
C     PROGRAMA PARA LER AS COORDENADAS E CALCULAR A AREA DO TRIANGULO
      REAL A, AX, AY, BX, BY, CX, CY
      READ (*,100) AX, AY, BX, BY, CX, CY
      A = AREA(AX, AY, BX, BY, CX, CY)
      WRITE (*,200) A
      STOP
  100 FORMAT(6F8.2)
  200 FORMAT(7HAREA = , F10.4)
      END

Makefile:

area_tri: area_tri.f
	gfortran -std=legacy area_tri.f -o area_tri
clean:
	rm area_tri

Execução:

pi@raspberrypi:~/F/area_triangulo $ ./area_tri 
   15.00   10.00   23.00   30.00   65.00   20.00
AREA =   460.0000

Nota:

A linguagem de programação COBOL (COmmon Business Oriented Language), na época muito utilizada para aplicações comerciais, enquanto o Fortran era utilizado para aplicações científicas, foi criada em 1959 e teve seu primeiro padrão publicado pela ANSI em 1968 como USA Standard COBOL X3.23, conhecido como American National Standard (ANS) COBOL. Depois existiram os padrões ANSI 1974 e 1985, antes se ser inteiramente assumido pela ISO.

Referências: