- Project Runeberg -  Modern datateknik / Nr. 3 (1968) /
41

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.

Modern datateknik ■ 3 • 68

41

Lär mer om programspråk

Procedurer i

I ALGOL-GENIUS kan deklarationer
utföras såväl enligt ALGOLs konventioner
(i procedurdelen) som enligt GENIUS’
konventioner (i datadelen).

Med avseende på blockstrukturen
betraktas datadelen som ett överordnat block till
procedurdelen varför man i denna del har
direkt tillgång till alla data som deklarerats
både i datadel och procedurdel.

I ALGOL-GENIUS finns ett stort antal
inbyggda standardprocedurer med vilka
man kan utföra in- och utmatning av data,
behandling av strängar och datagrupper
etc. Det finns även möjlighet att skriva
egna procedurer samt att infoga
procedurer skrivna i annan kod.

I datadelen är det tillåtet att deklarera
strängar, datagrupper samt följder (arrays)
av heltal, reella tal, strängar och grupper.
Dessa dataenheter behandlas av
ALGOL-GENIUS-procedurer medelst
specificerar-na string, group, integer data array, real
data array, string data array respektive
group array.

Exempel: Procedur för nollställning av en
följd av grupper.

Deklarationen i datadelen är

01 area;

02 gr occurs 100;

03 c integer occurs 4;

Proceduren deklareras i procedurdelen:
procedure nollställ (grupper, antal, beg
ind);

integer antal, beg ind;

group array grupper;

begin integer i;

for i: = beg ind step 1 until beg ind +
+ antal — 1 do

zerogroup (grupper [i]);

end’,

nollställ (gr, 10, 20);

I proceduren nollställ har för enkelhets
skull standardproceduren zerogroup, som
utför nollställning av en grupp, utnyttjats.

PROCEDURER FÖR IN- OCH
UTMATNING.

In- och utdata är vanligtvis organiserade i
filer och poster, och deklareras i
datadelen.

Efter öppning av en fil (medelst
öppnings-proceduren openinput för infil och open-

ALGOL-GENIUS

output för utfil) kan filen läsas (med
read-file) eller skrivas (med writefile eller
writeline). Läsning eller skrivning sker alltid
med en post i taget varvid in- eller utdata
tolkas exakt enligt postbeskrivningen i
datadelen.

Exempel: Överföring av ett personregister
från magnetband till radskrivare.

openinput (bandfil);
openoutput (utfil);

LÄS: readfile (bandfil, posttyp, filslut);
if filslut then goto FORTS;
movegroup (bandpost, utpost);
writeline (utpost, -2);

goto LÄS;

FORTS:

Det är även möjligt att låta infil och utfil
använda gemensam postarea. Man
behöver därvid ej flytta varje post i bandfilen
med proceduren movegroup. Önskemål
om gemensamma postareor o. d. anges i
programmets miljödel.

Vid utmatning med procedurerna
writefile och writeline redigeras utdata på det
sätt som anges i en formatsträng, som
återfinns i postbeskrivningen för utposten.
Redigering med formatsträng sker alltid
på samma sätt oberoende av typen av
yttre enhet. Formatsträngens allmänna
utseende är -C A ZZ±h. d B >, där

Ett Z ger undertryckning av insignifikanta
nollor

Två Z ger total nollundertryckning
ger plustecken före positivt tal,
minustecken före negativt
ger mellanslag före positivt tal,
minustecken före negativt.

h heltal som anger antal heltalssiffror
d heltal som anger antal decimaler
A och B är godtyckliga teckensträngar.

Den enda obligatoriska uppgiften i
formatsträngen är h.d

I denna avslutande artikel om ALGOL-GENIUS
beskriver fil mag Bo Hedrén en del
standardprocedurer i språket. Deklarationer kan utföras
såväl enligt ALGOLs konventioner (i
procedurdelen) som i GENIUS’ konventioner (i datadelen.)

Exempel: En utpost innehåller följande
termer:

01 rad;

02 detaljnummer integer + Z 6.0
>;

02 detaljnamn string size 10;

02 styckpris real + 2sp - 4.2 > ;
Vid utmatning på t. ex. radskrivare trycks
detaljnummer på radens åtta första
positioner, detaljnamn påföljande 10positioner
och styckpris på de 10 därnäst följande.
Utskriften blir » - - 1349 - - STOL - 148
–––––146.80». - anger blank position.
Data i en utpost ligger i ALGOL-GENIUS
lagrade på samma sätt som övriga data.
Detta gäller även tal som deklarerats med
formatsträngar. Härigenom blir
behandlingen av utdata enkel. Flyttning till
utpostarea kan ske grupp- och/eller termvis.

Några exempel:

movegroup (konto in, konto ut);

aut: = ain;

aut: = ain+10;

movestring (namn in, namn ut, - 1);
Först vid utmatningen sker redigeringen
enligt de format som angivits i respektive
termers formatsträngar.

Exempel. Man vill skriva ut en tabellrubrik
»TABELL NR XXX», där XXX
betecknar ett heltal som beräknas i
programmet.

Utposten kan deklareras

01 rubrik;

02 tabnr integer + 2sp TABELL
sp NR sp 3.0 +;

I programmet beräknas tabnr varefter
posten skrivs ut:

tabnr : = arad + 2 * brad;

writeline (rubrik,-2);

Den andra parametern, som anges vid
proceduren writeline, avser
pappersframmat-ning. Proceduren används endast
förrad-skrivarutmatning; i övriga fall användes
proceduren writefile.

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


Project Runeberg, Sun Dec 10 17:22:39 2023 (aronsson) (download) << Previous Next >>
https://runeberg.org/moddata/1968-3/0041.html

Valid HTML 4.0! All our files are DRM-free