- Project Runeberg -  Modern datateknik / Nr. 1-2 (1968) /
43

Table of Contents / Innehåll | << Previous | Next >>
  Project Runeberg | Catalog | Recent Changes | Donate | Comments? |   

Full resolution (JPEG) - On this page / på denna sida - Sidor ...

scanned image

<< prev. page << föreg. sida <<     >> nästa sida >> next page >>


Below is the raw OCR text from the above scanned image. Do you see an error? Proofread the page now!
Här nedan syns maskintolkade texten från faksimilbilden ovan. Ser du något fel? Korrekturläs sidan nu!

This page has never been proofread. / Denna sida har aldrig korrekturlästs.

2 • 68

Modern datateknik • 1—2 • 68

43

Lär mer om programspråk

Klausuler i ALGOL-GENIUS

I en postbeskrivning måste alltid typen av
varje term framgå

Exempel:

01 POST;

02 A integer,

02 B;

02 C string size 10;

02 D real;

02 E;

Om en term i en post är av samma typ
som närmast föregående, behöver
typklausulen ej upprepas. I exemplet är B av
typ integer och E av typ real.

Storleken av en term anges med
klausulen size. Klausulen är obligatorisk för
strängar, där den anger det maximala
antalet tecken i strängen.

Posttyper

Klausulen type gör det möjligt att i
ALGOL-GENIUS arbeta med filer
innehållande flera posttyper utan att
programmeraren vid varje läsorder behöver ange
vilken posttyp som skall läsas. Posttypen
identifieras medelst en märkterm, en s k
typterm. Denna typterm måste ingå som
första term i varje post och vara av samma
slag (integer, real eller string’) och storlek
för alla posttyper.

Typtermens värde anges med klausulen
type. Exempel på fil med två posttyper:
fd fil records trans a, trans b;

01 trans a type «£ AB^>;

02 string size 2;

02 a real’,

02 b string size 5; ’

01 trans b type -<BC>>;

02 string size 2;

02 c integer’,

02 d real;

Alla poster av typ trans a innehåller som
typterm strängen <AB> och posterna
av typ trans b strängen <BC>.
Typtermen har ej namngivits i exemplet. Man
behöver i ALGOL-GENIUS ej namnge
dataenheter som man ej ämnar använda i
ett aktuellt program.

Vid inläsning av en post i en fil jämför
läsproceduren värdet av typtermen för
aktuell post med en lista över samtliga
under type givna värden. Läsproceduren
kan härigenom koppla in rätt
postbeskrivning och behandla den aktuella posten.

Den inlästa postens typ indikeras genom
att läsprocedurens andra parameter sättes

lika med postens ordningsnummer i
uppräkningen i klausulen records i
filbeskriv-ningsnotisen.

Exempel:

switch S: = TR1, TR2;

readfile (fil, posttyp, filslut);

goto S [posttyp];

TR1:

TR2:

Om en inläst post t ex är av typ trans b,
blir posttyp = 2 beroende på att trans b
upptagits som den andra posten i
klausulen records.

För en posttyp kan flera värden på
typtermen användas. I exemplet nedan har
som typtermer valts heltal, vilket ger en del
fördelar, bl a snabbare genomsökning av
typlistan.

fd fil records trans a, trans b;

01 trans a type 1, 2;

02 typterm integer,

01 trans b type 3;

02 integer,

I ALGOL-programmet kan typtermens
värde användas vid styrning till olika
programlägen. (Typtermen behöver endast
namnges för en av posterna i filen eftersom
dessa vid inläsning placeras i samma
minnesarea).

readfile (fil, posttyp, filslut);

goto S [typterm[;

I ALGOL-GENIUS datadel deklareras bl a
in-och utdata. I det sammanhanget kommer ett
flertal klausuler till användning. Fil mag Bo
Hedrén vid Datasaabs utbildningsavdelning
presenterar en del av dessa klausuler.

Med klausulen is slipper man i
ALGOL-GENIUS att upprepa beskrivningen av en
post med samma struktur som en tidigare
beskriven post tillhörande en annan fil.
Det förutsätts då att posterna vid inläsning
placeras i samma minnesarea samt att
posterna tillhör filer, som tillordnats samma
typ av yttre enhet.

Exempel fd bandfil 1 records post a;

01 post a;

02 c integer,

02 d real;,

02 e string size 20;

fd bandfil 2 records post b;

01 post b is post a;

Om indicerade variabler deklareras i
datadelen sker detta med klausulen occurs, som
får förekomma på högst 3 nivåer (alltså
högst 3 indices). I procedurdelen tillåts
som i ALGOL ett godtyckligt antal
indices.

Exempel:

01 ARBETSPOST;

02 GRUPP occurs 10;

03 UGRUPP occurs 5;

04 ELEM integer occurs 17;

En term i posten får namnet ELEM
[i, j, k], där indices i, j och k räknas från
den största enheten i posten.

Sista termen i den första gruppens fjärde
undergrupp får således namnet ELEM
[1, 4, 17].

En term kan ges ett begynnelsevärde
med klausulen value, som förutom i en
termnotis även får förekomma i en
postnotis.

Exempel: Deklarera en tabell
innehållande årets månader som strängar om
vardera 3 tecken.

01 TABELL value <JAN>, <FEB>,
<MAR>, <APR>, <MAJ>,
<JUN>, <JUL>, <AUG>,
<SEP>, <OKT>, <NOV>,
<DEC>;

02 MÅNAD string size 3 occurs 12;

Termen MÅNAD [1] t ex får värdet
[JAN] osv.

<< prev. page << föreg. sida <<     >> nästa sida >> next page >>


Project Runeberg, Sun Dec 10 17:22:34 2023 (aronsson) (download) << Previous Next >>
https://runeberg.org/moddata/1968-1-2/0043.html

Valid HTML 4.0! All our files are DRM-free