.union(.char, .real) t, v; t:="a"; t:=3.14; v:=t; #ALGOL-68# union{ char ch, real x } t, v; t.ch = 'a'; t.x = 3.14; v = t; /*C*/
Ĉi tie la variabloj t,v entenas jen signan, jen reelan valoron, kaj la zorgo pri ilia ĝusta uzo estas tute lasita al la programisto. Tia libero estas utila, kiam en la programo oni uzas unu saman memorpecon (ekz-e reĝistron) por diverstipaj valoroj, aŭ kiam la programo devas trakti objekton kun statike nedeterminebla tipo (ekz-e grafeon, en kiu ĉiu vertico apartenas al unu el pluraj eblaj tipoj; dosieron kun diverstipaj rikordoj).
Kontraste al la rikordoj, kiujn en ALGOL-68 kaj C oni nomas strukturoj, kaj kiuj en siaj kampoj samtempe povas enteni diverstipajn valorojn, unio ajnmomente havas nur unu valoron. La Paskalaj varihavaj rikordoj malkomponeblas en kombinon de tiaj simplaj «strukturoj» (senvariaj rikordoj) kaj unioj. Ekz-e tipo figuro (tiu el Rikordoj en Paskalo) en ALGOL-68 esprimeblas jene:
.mode .triangulo = .struct(.real latero, klino, alfa, beta); .mode .ortogramo = .struct(.real lateroA, lateroB, oblikvo); .mode .figuro = .struct( .real x, y, areo; .union(.triangulo, .ortogramo, .real #diametro#) mikso);
La okazetikedo estas implicata en ALGOL-68, ĝi uzeblas en la «porunia okazordono»:
.case mikso.of fig .in #supozante ke fig estas .figuro# (.real d): f(d), #la okazo cirklo, la kampo diametro# (.ortogramo ort): areo.of fig := lateroA.of ort*lateroB.of ort .esac
(La nomoj d kaj ort estas deklaritaj por sia branĉo de la okazordono kaj nomas la koncernan okazon de la unio.) Simile estas pri klasoj en SIMULA-67 kaj Oberono. — En C nenia implica okazetikedo estas provizata.
La tuta programo konsistas el «ĉefprogramo» kaj aro da «subprogramoj» (speco de proceduro), kiuj estas tradukeblaj dise, sendepende unu je la aliaj. La subprogramoj konsistas el frazoj deklaraj kaj «plenumeblaj» — kiujn lastajn ni nomas ordonoj; normale la ordonoj estas plenumataj laŭvice, en la teksta ordo; sed la stiraj ordonoj (simplaj kaj kalkulataj saltoj, kondiĉaj ordonoj, iteracioj kaj procedurvokoj) servas por malimplice ŝanĝi tian plenumordon.
La subprogramoj interŝanĝas datumojn per siaj parametroj kaj tra komunaj memorblokoj (angle COMMON blocks). Ĉar en la tradicia FORTRAN rekursiaj proceduroj estas malpermesitaj kaj la indiclimoj en la tabeloj estas konstantaj, la agoj por atingi tabelelementojn parte estas plenumataj dum la tradukado, kio konsiderinde plirapidigas la rulon de pretaj programoj.
Nun oni povas diri, ke la ĉefa interesaĵo de FORTRAN estas ne la lingvo mem, sed la unika rolo, kiun ĝi havis tutmonde en la programado. El «matematika maŝinkodo» por IBM 704 ĝi, per evoluo nemalsimila al la evoluo de la homaj lingvoj, iĝis la plej disvastigita programlingvo. Disponeblo de almenaŭ unu realigo de FORTRAN estas nepraĵo por ĉia ĝeneralcela komputilo.
En tiu evoluo FORTRAN retenis kelkajn trajtojn de simbola maŝinkodo, gravajn por la oportuno de programado aŭ vartado, ekz-e malsimplajn konstantojn (DATA, la datumfrazo) kaj disa tradukeblo. Ili kontribuis al akumuliĝo de grandegaj programbibliotekoj de Fortranaj proceduroj pri la nombraj metodoj de analitiko, grafikado, statistiko, inĝenieraj kalkuloj ktp. Tamen kontraste al ALGOL-60, FORTRAN kombinas la rimedojn por la nombraj kalkuloj kun riĉa esprimilaro por redakta eneligo (la frazoj FORMAT ktp).