Deutsch English
Alphabetischer Index
Array-Funktionen
CGI-Funktionen
Datentypen
Datums/Uhrzeit-Funktionen
Debugging
Operatoren
Ramtext-Funktionen
Selektion
Socket-Funktionen
Sonstige-Funktionen
Sprachelemente
  • 'ANWEISUNGEN'
  • 'AUSDRÜCKE'
  • 'BEZEICHNER'
  • DEF
  • IF
  • 'INDEXBESCHREIBUNG'
  • 'KONSTANTEN'
  • MODULE
  • PROCEDURE
  • REPEAT
  • RETURN
  • USES
  • VAR
  • WHILE
    Statistik-Funktionen
    Stream-Funktionen
    String-Funktionen
    System-Funktionen
    Tabellen-Funktionen
    Text-Funktionen
    Volltext-Funktionen
    Zahlen-Funktionen
    Home    Überblick    Suche    Impressum    Kontakt    Mitglieder
    Themenkomplex Sprachelemente
    Funktion PROCEDURE
    Kurz Leitet eine Prozedur ein
    Syntax PROCEDURE Bezeichner[(Parameterliste)][: Grundtyp];
    Parameter Parameterliste::=Parameter{;Parameter}.
    Parameter:=[VAR ]Bezeichnerliste : Typ.
    Bezeichnerliste::=Bezeichner{, Bezeichner}.
    Typ::=Grundtyp [Arraydef].
    Grundtyp::=CHAR|BYTE|INTEGER|REAL|STRING|MARKS|TBITS.
    Arraydef:=[Dimensionsliste].
    Dimensionsliste::=Zahl{,Zahl}.
    Ergebnis
    Siehe auch:
    MODULE
    Beschreibung Jedes ausführbare Module muss mindestens die Prozedur mit dem Namen "Main" enthalten.
    Wird bei der Prozedur-Deklaration ein Ergebnistyp angegeben, so handelt es sich um eine Funktionsprozedur, die in Ausdrücken verwendet werden kann.

    Eine Prozedur hat immer folgenden Aufbau:

    PROCEDURE

    ENDPROC

    Der Prozedurkopf besteht aus dem zwingend vorgeschriebenen Prozedurnamen, einer optionalen Parameterliste, sowie einem optionalen Ergebnistyp.
    Der Aufruf einer Prozedur erfolgt durch Angabe ihres Namens in Ausdrücken.
    Da die Prozedur bereits in ihrem eigenem Rumpf bekannt ist, ist eine direkte Rekursion möglich.
    Maximal können
    1024 Prozeduren in einem prg existieren.

    Beispiel für eine einfache Prozedur:
    PROCEDURE write_cgi_header;
      cgiwriteln('content-type: text/html');
      cgiwriteln('')
    ENDPROC
    
    Parameterliste

    Einer Prozedur können Werte bzw. Variablen-Referenzen von aussen mitgegeben werden.
    Diese werden direkt nach Prozedurnamen in runden Klammern angegeben. Man spricht in diesem Fall von einer formalen Parameterliste:
    PROCEDURE fett(zeile : STRING);
      cgiwrite('');
      cgiwritehtml(zeile);
      cgiwriteln('')
    ENDPROC
    
    Der Aufruf dieser Prozedur erfolgt beispielsweise durch:
    fett('Überschrift');
    fett(lower(cgigetparam('headline')));
    
    An Stelle des formalen Parameters steht also beim Aufruf ein beliebiger Ausdruck des (in der Parameterliste) festgelegten Typs.
    Dieser Wert wird dann zunächst berechnet und in die lokale Variable (hier "zeile") der Prozedur übertragen.
    Man bezeichnet derartige Parameter deshalb als Wertparamter (call by value).

    Wichtig:An jeder Stelle der Prozedurliste muss beim Aufruf ein Argument stehen!

    Neben den Wertparametern kennt EASY auch noch Referenzparameter.
    Hier wird der formale Parameter als Platzhalter für eine Variable angesehen.

    Dieser Platzhalter wird beim Aufruf durch die übergebene Variable ersetzt:
    Eine Zuweisung innerhalb der Prozedur an die formale Variable ändert also beim Aufruf die übergebene Variable.
    An Stelle eines Referenzparamaters muss also beim Aufruf eine Variable übergeben werden (und keinesfalls ein Ausdruck oder eine Konstante).
    Referenzparamter werden durch ein vorangestelltes "VAR" kenntlich gemacht.

    Beispiel:
    PROCEDURE doppelt(VAR x : REAL);
      x:=2*x
    ENDPROC
    
    Der Aufruf erfolgt beispielsweise so:
    VAR a : REAL;
    a:=10;
    doppelt(a);  // jetzt hat a den Wert 20
    

    Beispiel 1: High



    PROCEDURE FieldTest(VAR a : INTEGER[,]);
    VAR max_i : INTEGER = High(1,a);
    VAR max_j : INTEGER = High(2,a);
    ...
    ENDPROC
    
    
    VAR x : INTEGER[10,5000];
    VAR y : INTEGER[5,0];
    ...
    FieldTest(x) // max_i=10; max_j=5000
    FieldTest(y) // max_i=5; max_j=0 


    tdbengine chat
    irc.tdbengine.org
    #tdbengine

       Copyright © 2003-2004 tdb Software Service GmbH
       Alle rechte vorbehalten. / All rights reserved
       Letzte Änderung: 21.10.2004
    {Fehler für :execmacro{execmacro="sessionspy"}