Siemens 3003 COBOL

Fra DDHFwiki
Spring til navigation Spring til søgning

Regnecentralen indgik i efteråret 1962 kontrakt med det tyske selskab Siemens u. Halske om levering af en COBOL-compiler til selskabets nye databehandlingsanlæg Siemens 3003. Denne havde en hukommelse på minimum 8.000 24-bit ord, båndstationer og hulkortlæser.

Planlægningen og programmeringen af COBOL-compileren blev varetaget af afdelingen for systemprogrammering, der havde til huse i Rialto bygningen. Kontrakten lød på ca. 1,3 mill. kr., og til levering færdigindkørt 1. okt. 1964. Det fulde compiler-system, bestående af 39.000 maskin-instruktioner blev leveret i juli 1965. En alvorlig forhindring var at COBOL som standardiseret sprog ikke var modent. Der var ikke megen erfaring med at implementere COBOL-compilere, og det viste sig ofte at CODASYL specifikationen indeholdt fejl. Siemens compileren blev implementeret til at overholde COBOL-61.

Compilerarkitektur

Efterhånden som definitionen af sproget blev færdig kunne strukturen af compileren fastlægges. Den kunne primært opdeles i to hovedprogrammer, nemlig selve oversætteren og det kørende system. Compileren ville i lighed med GIER-ALGOL være forsynet med en multipass oversætter, der i 10 gennemløb via et tilsvarende antal mellemsprog efterhånden omdannede COBOL-programmet til den endelige maskinkode for Siemens 3003. Det kørende system, der i virkeligheden blot var et bibliotek til det oversatte program, bestod af en række faste administrations-sekvenser til kontrol med sekventeringen af programmet, input og output etc.

Kildekoden til oversættelse blev indlæst fra hulkort. Compilerens delprogrammer blev indlæst fra bånd i rækkefølge. Mellemsprogene blev skiftevis skrevet ud på, og indlæst fra to yderligere båndstationer. Det oversatte program blev normalt skrevet til bånd, men kunne også skrives til hulkort eller hulstrimmel. De 10 gennemløb bestod af:

  1. Opsamling og omdannelse af COBOL-ord, reserverede såvel som navne indført af programmøren, til intern repræsentation.
  2. Syntaktisk kontrol.
  3. Opsamling og entydig navngivning af samtlige kvalificerede og ukvalificerede navne.
  4. Uddeling af entydige navne.
  5. Opsamling og kontrol af beskrivelser af de indførte navne.
  6. Uddeling af beskrivelser.
  7. Typekontrol og generering af visse parametre til den endelige kode.
  8. Definition af symbolske adresser.
  9. Tildeling af adresser.
  10. Afsluttende generering af kode.

Hastighed

Under operation af system blev der målt en grundlæggende indlæsningstid på selve compileren på 45 sekunder plus en gennemsnitlig oversættelsestid på 0,25 sekunder pr. kildekode-linje (eller 15 millisekunder pr. genereret instruktion). Som et eksempel blev et kildeprogram bestående af 750 kort oversat til et objektprogram med 12.460 instruktioner på 3,8 minutter.

Til sammenligning kan nævnes at den på det tidspunkt hurtigste oversættelse blev opnået af COBOL-60 oversætter udviklet til GE-225. Denne maskine mindede meget om Siemens 3003 med hensyn til lagerkapacitet og intern hastighed. Ved brug af en kortlæser, en linjeprinter og 6 magnetbånd blev et COBOL program på 328 kort oversat til 4.300 instruktioner på 16 minutter. Den tilsvarende oversættelsestid på Siemens 3003 ville kun svare til 2 minutter.

Kilder
Internt RC-nyt, December 1963