Zum Hauptinhalt springen

2. Datendefinitions-Teilsprache

2.1 Felder​

Die gesamte Kommunikation mit der Netzmaschine erfolgt über Bitfolgen: Diese Bitfolgen, auch als Nachrichten bezeichnet, werden vom empfangenden HOST analysiert, um innerhalb seines Speichers die Datenstrukturen in seinem eigenen Speicher und Code zu rekonstruieren.

Bits werden zu signifikanten Feldern gruppiert: Ein Feld ist eine Gruppe von Bits mit bestimmtem Inhalt. Es kann enthalten:

  1. ein Datenelement (Datenfeld)
  2. ein Bitmuster, das Umgebungsparameter angibt
  3. einen Zeiger
  4. die Identifikation einiger anderer Felder.

Die Methode zur Beschreibung der Formate von Perlen ist von der in RFC #31 vorgeschlagenen Methode zur Beschreibung einer binären Nachricht abgeleitet:

  1. jedes Feld wird mit seinem Namen und seiner Länge in Bits deklariert.
  2. häufig verwendeten festen Werten eines Feldes, die einer besonderen Bedeutung entsprechen, können Namen gegeben werden.
  3. zulässige Arten der Verkettung von Feldern werden durch Regeln eingeleitet; wenn nur bestimmte feste Werte eines Feldes zulässig sind, können sie entweder durch ihren Wert oder durch den entsprechenden Namen angegeben werden.

2.2 Datenperlen.​

Datenfelder (Typ (a)) werden zu Datenperlen verkettet: Eine Perle ist eine unteilbare atomare Dateneinheit, die als Bauelement jeder zwischen HOSTs und Netzmaschine zu übertragenden Datenstruktur verwendet wird. Eine Perle ist die kleinste Dateneinheit, die referenziert werden kann.

Die zulässigen Arten, eine Perle durch Verkettung mehrerer Felder zu bilden, sind in einer Konstruktionsregel angegeben. Perlen haben eine feste Länge und eine eindeutige Struktur. In einer realen Maschine werden Perlen gewöhnlich als ganzzahlige Anzahl zusammenhängender Register definiert. Diese Einschränkung gilt hier nicht, obwohl es sich als effizienter erweisen kann, HOSTs mit beispielsweise 32-Bit-Wörtern und 4 Bytes pro Wort zu bevorzugen, was die häufigste Wortstruktur im ARPA-Netz ist.

Datenperlen können als die Operanden der Sprache betrachtet werden, in der Felder vom Typ (b) und (c) Operatoren wären.

2.3 Steuerfelder​

Die Art, wie Datenperlen miteinander verknüpft sind, und die Umgebung, in der sie arbeiten, werden durch zusätzliche Steuerfelder angegeben, die nicht referenziert werden können und Operatoren auf oder Bezeichner der folgenden Perlenfolge oder Verknüpfungen zwischen einzelnen Perlen sind.

Der Geltungsbereich eines Steuerfeldes kann ebenso alle Perlen oder Unterstrukturen einer Struktur umfassen, wenn es auf der Ebene des Kopfes der Struktur angegeben wird. Genauer gesagt müssen zwei Arten von Perlenstrukturen definiert werden: homogene und heterogene Strukturen.

Eine Struktur ist als homogen definiert, wenn am Kopf der Struktur sowohl ein einziger Perlentyp als auch eine feste Parameterumgebung für die gesamte Struktur angegeben ist.

Eine Struktur ist als heterogen definiert, wenn mindestens eine der folgenden Bedingungen zutrifft.

  • zum Aufbau der Struktur werden verschiedene Perlentypen verwendet

  • die Umgebung, in der sich die Perlen der Struktur befinden, ändert sich innerhalb der Struktur.

Fünf Hauptsteuerfelder müssen definiert werden.

  1. MODIFY
  2. FLAG
  3. POINTER
  4. IDENTIFICATION
  5. PARAMETER

2.3.1 MODIFY-Feld​

Das MODIFY-Feld ist ein 1-Bit-Feld, das jeder Perle einer heterogenen Struktur vorangeht: Es ist ein Flag, das gesetzt wird, wenn ihm ein oder mehrere Steuerfelder vom Typ b, d oder e folgen, die entweder die Umgebung der Datenperlen oder deren Typ ändern sollen. Dieses Feld hat den Wert:

  • 1: wenn sich der Typ der zugehörigen Datenperle und ihre Umgebung nicht ändern
  • 0: wenn das zugehörige Element ein Steuerfeld oder eine Folge von Steuerfeldern vom Typ b, d oder e ist, die eine Änderung von Typ und/oder Umgebung der folgenden Datenperlen angeben.

2.3.2 FLAG-Feld​

Wenn das MODIFY-Feld gesetzt ist, folgt ihm unmittelbar ein 8-Bit-FLAG-Feld, das angibt, welche des IDENTIFICATION-Feldes und mehrerer möglicher PARAMETER-Felder vorhanden sind; auf eins gesetzt bedeutet jedes einzelne Bit Folgendes:

bit number

0 IDENTIFICATION field present
1 first parameter field present
2 second parameter field present
---
6 sixth parameter field present
7 next field is another FLAG field
for some more parameters (in case
more than 6 parameters may be
attached to a bead environment).

2.3.3 POINTER-Feld​

Anzahl und Art der jeder Perle beizufügenden Zeiger hängen von der Strukturdefinition ab. Eine gegebene Listenstruktur kann einen Vorwärtszeiger benötigen. Eine Ringstruktur kann einen zusätzlichen Zeiger auf das erste Element verwenden. Die notwendigen Verknüpfungen zwischen Perlen werden in der Strukturdefinition festgelegt, woraufhin die notwendigen Zeigerfelder automatisch jeder Datenperle hinzugefügt werden. Eine Perle wird innerhalb einer Struktur durch eine Adresse relativ zum Kopf der Struktur referenziert. Daher sollte ein 16-Bit-Zeigerfeld völlig ausreichen, um diese Adresse aufzunehmen.

2.3.4 IDENTIFICATION-Feld​

Das IDENTIFICATION-Feld ist ein 8-Bit-Feld, das einen Perlentyp aus der Liste der definierten Perlentypen identifiziert. Standard-Perlentypen werden von null aufwärts nummeriert, nicht standardmäßige Perlentypen von 255 abwärts. Die Nummerierung der nicht standardmäßigen Typen ist jedem Serverprogramm oder einer Gruppe von Serverprogrammen eigen. Die IDENTIFICATION-Felder folgen einem MODIFY-Feld mit dem Wert 1, wann immer der Perlentyp nicht für die gesamte Struktur in der Wurzel der Struktur definiert wurde. Identifikationsfelder werden auch auf der Ebene des Kopfes der Struktur verwendet, um den Typ identischer Elemente (Perlen oder Strukturen) anzugeben, die innerhalb dieser Struktur verwendet werden.

2.3.5 PARAMETER-Feld​

Das PARAMETER-Feld gibt die Liste der Umgebungsparameter an, in denen die folgende Datenperlenfolge liegt. Ein PARAMETER-Feld ist spezifisch für einen Perlentyp; es folgt unmittelbar auf das MODIFY-Feld, wenn keine Mehrdeutigkeit besteht, oder auf den Typ der nächsten Datenperlen.

Beispiel: Das Parameterfeld der Standardperle BEAMVT enthält die folgenden Felder.

  • ein 2-Bit-Feld, das die Art der erzeugten Bewegung angibt
      00       do not display       move the beam
01 display final point point
10 display vector vector
11 unused
  • ein 4-Bit-Feld, das die Strahlintensität durch eine Zahl von 0 bis 15 angibt, wobei 0 eine Nullintensität und 15 die maximal mögliche Intensität bedeutet.

  • ein 1-Bit-Feld für das Blinken

  • 0: aus

  • 1: ein

  • ein 1-Bit-Feld für die Lichtgriffelempfindlichkeit

  • 0: aus

  • 1: ein

2.4 Definition der Metasprache​

In den Beispielen wird wegen ihrer Lesbarkeit eine an COBOL-Reports angelehnte Metasprache verwendet, sowohl bei den Perlen- als auch bei den Strukturdefinitionen.

Symbol               Meaning

+ concatenation

{ } choice

[ ] optional choice

{ } l<=u { } l<=u repetition

1 lower bound on the
number of identical
items; if omitted l
is assumed to be 0.

u upper bound on the
number of identical
items; if omitted u
is assumed to be ∞.

a number alone means: exact
number of repetition.

: label for further use _within the same rule_
= assignment
= > conditional alternative
( ) grouping
' ' indicates a special value given to the following field name

(+) plus
(-) minus

2.5 Vorgeschlagene Standardperlen​

2.5.1 Alphanumerische Perlen​

Zeichen: CHAR​

Ein Zeichen besteht aus einem Acht-Bit-Feld (das denselben Namen trägt). Viele spezielle Muster, die gebräuchlichen Sonderzeichen entsprechen, sind definiert; sie sind in Tabelle 2.5.1 angegeben, ebenso wie einige Teilmengen von CHAR. Der grundlegende Zeichencode wird als Standard-ASCII deklariert

                                 standard EBCDIC
CODE
or by the name
followed by the 128 characters in this code corresponding to
the 128 ASCII characters. If no code declaration is specified,
the ASCII code is assumed by default.

Zahlendarstellung​

Normalerweise verbleibt der Kern eines Programms im HOST des Servers, und der HOST des Benutzers sollte keine arithmetischen Operationen an den Daten durchführen müssen. In diesem Fall müssen die Prinzipien, die der Konzeption des Rechenwerks eines HOSTs zugrunde liegen, nicht beschrieben werden. Das Format der Fest- und Gleitkommazahlen muss jedoch beschrieben werden.

  • wenn Benutzer- und Server-HOST dieselbe Zahlendarstellung haben,zum Beispiel die Standarddarstellung,verringert die Übertragung der Daten in ihrer Zahlendarstellung den Datenfluss zwischen ihnen.

  • wenn der Server-HOST eine andere Zahlendarstellung als die Standarddarstellung hat, gibt es je nach den übertragenen Daten zwei Alternativen:

    • die numerischen Daten werden als Dezimalzahlen im Standardcode ausgetauscht

    • das Fest- und Gleitkommaformat werden der Netzmaschine definiert, und der Benutzer-HOST führt

entweder eine direkte Umcodierung von der binären Darstellung des Servers in die Dezimaldarstellung und umgekehrt durch.

oder eine Umcodierung von der binären Darstellung des Servers in seine eigene binäre Darstellung und umgekehrt.

Da die meisten ausgetauschten Zahlen dezimal gedruckt werden sollen oder als dezimale Eingabe vorliegen, ist man der Ansicht, dass bei Inkompatibilität zwischen den binären Darstellungen der betreffenden HOSTs ein Austausch in Dezimaldarstellung am einfachsten wäre.

Somit werden definiert:

  1. Zahl in Dezimaldarstellung, die keine Perle, sondern eine Zeichenkette ist (siehe 2.3.1)

  2. Festkommazahlen: einfache Genauigkeit FXPNUM1, doppelte Genauigkeit FXPNUM2

Field definition  BYTE    8     SIGN    1
SBYTE 7

FXP NUM1 <-- SIGN + SBYTE + {BYTE}3
FXP NUM2 <-- FXP NUM1 + {BYTE}4
  1. Gleitkommazahlen: einfache Genauigkeit FLPNUM1, doppelte Genauigkeit FLPNUM2
        FLP NUM1 <-- SIGN + SBYTE + {BYTE}3

FLP NUM2 <-- FLPNUM1 + {BYTE}4

Dies drückt nur die Syntax der Gleitkommazahl aus. Die Semantik sollte besagen: in FLPNUM1

  • SIGN ist das Vorzeichen der Zahl im Format {BYTE}3, welche die Mantisse ist

  • SBYTE ist der Exponent, und sein Wert ist um einen Wert von 40₁₆ verschoben, um positive Exponenten sicherzustellen. Tatsächlich unterscheiden sich FXPNUM1 und FLPNUM1 durch ihre Semantik.

Diese Eigenschaften werden durch eine spezielle Felddefinition ausgedrückt:

        EXP <-- SBYTE (+) '40H'SBYTE
MANT <-- SIGN (+) {BYTE}3

und eine Gleitkommazahl ist definiert als:

        FLP = MANT  2EXP

1. Sonderzeichen​

         Transmission Control Characters

SOH
STX
ETX
EOT
ENQ
ACK
DLE
NAK
SYN
ETB
ESC

Printer Control Characters

horizontal tabulation HT + '0X1' CHAR
vertical tabulation VT + '0BX' CHAR
new line NL + '0AX' CHAR
end of message EOM + '08X' CHAR

Teletype Control Characters

Carriage return CR + ''0DX' CHAR
shift out SO + '0EX' CHAR
shift in SI + '0FX' CHAR
BS +

Device Control Characters

DC1
DC2
DC3
DC4

Table 2.3.1

2. Zeichenteilmengen​

Numeric characters                    ' 1 '
                                      { 2 }
     NUM          +                   { . }      CHAR
                                      { . }
                                      { 9 }
                                      '   '

Printable characters                  { NUM
                                      { ALPH
     PRCHAR       +                   { ≡
                                      {

Intermediate characters               ' characters '
                                      { in column }    CHAR
     ITCHAR       +                   { 2         }
                                      '           '

Final Characters
     FIN CHAR     +                   CHAR   ⊖   ITCHAR

Transmission Control
Characters*                           ' NUL '
                                      {  .  }
     TRACHAR      +                   {  .  }     CHAR
                                      { DEL }

Derra Control Characters                              Teletype control character
     DCCHAR       +                   ' DC1 '     CHAR    TYCCHAR   { CR
                                      { DC2 }                          { SO
                                      { DC3 }                          { SI
                                      { DC4 }                          { BS
                                      '     '                          {

Alphabetic characters                 ' A '
                                      {  .  }     CHAR
     ALPH         +                   {  .  }
                                      { Z  }
                                      '    '

Printer Control
Characters                            { HT
                                      { VT
     PCCHAR       +                   { NL   }    CHAR
                                      { EOM  }
                                      {

     Table 2.3.1:  Special ASCII characters and groups of ASCII
                   characters.

*see USACII standards

2.5.2 Grafische Perlen​

Wie von J. Rulifson in RFC #5 vorgeschlagen, wird der Bildschirm jeder grafischen Anzeige als Quadrat angenommen; die Koordinaten von Punkten sind auf beiden Achsen von -1/2 bis +1/2 normiert. Die Position des ersten Punktes einer Struktur wird durch die Auslenkung vom Ursprung bestimmt, der die Ruheposition des Strahls ist; die folgenden Punkte werden durch ihre Auslenkungen (AX,AY) von der letzten Strahlposition bestimmt.

Somit müssen nur zwei Datenfelder definiert werden:

  • DEFLECTION: ein 12-Bit-Feld: Die Auslenkung wird durch eine Zahl zwischen - 1 und +1 mit der beim Server üblichen Genauigkeit definiert.

  • ANGLE: ein 15-Bit-Feld, das einen Winkel von 0 bis 2Π im Bogenmaß zwischen der horizontalen Achse und einer durch den Ursprung verlaufenden Achse definiert. Sein erstes Bit gibt an, ob der Winkel im Uhrzeigersinn oder gegen den Uhrzeigersinn zu nehmen ist.

Die Datenperlen sind:

MOVE

Abhängig von den Parametern, die beim Auftreten dieser Perle gesetzt sind, kann MOVE Folgendes angeben:

  • eine unsichtbare Bewegung des Strahls; in diesem Fall ist die Strahlintensität null

  • einen neuen Punkt: in diesem Fall ist die Strahlintensität erst eingeschaltet, wenn der Strahl den neuen Punkt erreicht hat.

  • einen Vektor: in diesem Fall wird die Strahlintensität auf einen bestimmten von null verschiedenen Wert gesetzt

        MOVE + {DEFLECTION}2

Kreisbogen: ARC

Ein Kreisbogen wird durch seinen Mittelpunkt definiert, gefolgt von seinem Anfangspunkt und dem Winkel seiner Endachse.

        ARC + {DEFLECTION}4 +ANGLE

2.6 Vorgeschlagene Parameterfelder.​

2.6.1 Zeichenketten.​

In Zeichenketten sind einige der Steuerzeichen in Wirklichkeit Parameterfelder: Sie wirken als Operator auf die folgende Zeichenfolge. d. h.:

lower shift
upper shift
new line
escape
. . . .

Da aber Code und Verwendung dieser Zeichen in den Standardcodes festgelegt sind, werden sie nicht in die Parameterdefinition aufgenommen. Man kann ausnutzen, dass diese Zeichen in den beiden linken Spalten des ASCII- oder EBCDIC-Standardcodes liegen: Sie entsprechen Codes, deren erste drei Bits in EBCDIC und deren erste zwei Bits in ASCII null sind.

2.6.2 Grafikparameter​

Die folgenden Parameterfelder sind definiert:

     scale                    SCALE         4
beam intensity INT 4
light pen sensitivity SENS + SWITCH
blinking BLINK + SWITCH
beam BEAM + SWITCH

SWITCH ist ein 1-Bit-Feld, das die folgenden Werte annehmen kann:

     ON <-- '1'     SWITCH
OFF <-- '0' SWITCH

Ein Schalterparameter bleibt ON, solange er nicht auf OFF zurückgesetzt wird.

Die Strahlintensität wird durch eine Zahl von 0 bis 1 ausgedrückt. 0 ist schwarz und 1 so hell, wie die Anzeige es erlaubt. Zahlen dazwischen geben den relativen Logarithmus der Intensitätsdifferenz an. BEAM erlaubt es, den BEAM ein- oder auszuschalten, ohne den aktuellen INT-Parameter zu ändern.

2.7 Strukturen​

2.7.1 Strukturdefinition.​

Die Strukturdefinition besteht hauptsächlich in der Angabe der topologischen Beziehungen zwischen Datenperlen:

  • sequenzielle Beziehungen; kein Zeigerfeld erforderlich

  • Verknüpfungen über eine Anzahl von Zeigern.

2.7.2 Standard-Strukturtyp.​

Zwei grundlegende Standard-Strukturtypen werden gewählt

  • VECTOR: zur Darstellung einer Folge von Datenperlen (Zeichenketten, Arrays, Tabellen...)
  • PLEX: zur Darstellung jeder Art von gerichtetem Graphen, Baum, Ring...)
VECTOR (C;N1,...NC) <-- VECTORHDR + VECTORBODY

VECTORBODY <-- (=C+1:{defined bead})Ni + [VECTORBODY]

VECTORHDR <-- 'VECTOR' IDENTIFICATION + C + N1 + N2 + .... + NC

C ist die Anzahl der Teile (Spalten) im Vektor, wobei jeder Teil NC Elemente hat.

Es ist wahrscheinlich auch interessant, einen komprimierten Vektor COMPVECTOR zu definieren, in dem Folgen identischer Elemente als 1 Element + eine spezielle Perle + die Anzahl identischer Elemente in Folge übertragen werden.

PLEX (M)

Das erste Bit eines Zeigerfeldes gibt an, ob der Zeiger auf ein Endelement zeigt oder nicht. Ist dies der Fall, werden dem Datenelement keine Vorwärtszeigerfelder hinzugefügt.

M ist die Anzahl der Datenelemente in der Struktur.

2.8 Objekte​

2.8.1 Objektdefinition.​

Ein Objekt wird durch eine semantische Regel definiert, die auf der rechten Seite Folgendes umfasst

  • einen Namen zur Identifikation des Objekts
  • eine Menge von Parametern der Objektdefinition.
  • Operanden: Namen der als Datenelemente verwendeten Perlen

auf der linken Seite

  • Operatoren: Parameterfelder
  • Struktur der Datenperlen.

d. h. Die Definition eines neuen Objekts namens SQUARE lautet:

SQUARE <-
(A,L,AΘ) ROT(ANGLE) (VECTOR(1,4) (BEAM'OFF'+
MOVE (A) + BEAM 'ON' + MOVE (0,L) + MOVE (L,0) +
MOVE (0,2L) + MOVE (2L,0))

Dabei bezieht sich ROT auf eine in der Datenmanipulationssprache definierte Transformation, und VECTOR ist als Standardstruktur definiert.

  • Der Bezeichner der neuen Struktur ist SQUARE
  • Der verwendete Strukturtyp ist VECTOR mit Dimension 1 und 4 Elementen
  • Die Elemente des VECTOR sind Standardperlen MOVE
  • Die Parameter sind A, L und A Θ
  • Die Parameterfelder BEAM 'OFF' und BEAM 'ON' werden verwendet.

2.8.2 Alphanumerische Standardobjekte.​

Komprimierte Zeichenkette (COMSTRING)

COMSTRING <-- VECTOR (1) ({ [PCHAR]n + { HT+NUM
{ VT+NUM
{ ESC+CHAR
{ NL
{ EOP
} } )n EOP

Eine komprimierte Zeichenkette ist beliebig oft eine Folge beliebig vieler druckbarer Zeichen, gefolgt von einem der folgenden Zeichen

  • horizontale Tabulation, gefolgt von der Anzahl der entsprechend hinzuzufügenden Leerzeichen

  • vertikale Tabulation, gefolgt von der Anzahl der zu überspringenden Zeilen.

  • Escape, gefolgt von einem beliebigen Zeichen

  • neue Zeile

  • Seitenende

Die komprimierte Zeichenkette wird durch ein EOF-Zeichen abgeschlossen.

Codetabelle (CODE)

CODE <-- VECTOR (1;128) {CHAR}128

CODE ist der Name der Übersetzungstabelle, die für ein gegebenes Programm angenommen wird. Wenn sie vom Benutzer definiert wird, muss er von Spalte 1 bis Spalte 8 das 8-Bit-Muster angeben, das dem entsprechenden ASCII-Code äquivalent ist.

Binäres Kartenabbild

B CARD <-- VECTOR (1;120) {CHAR}120

Gepackte Dezimalzahl HNUM 4-Bit-Feld

      ' A X '                          ' 0 H '
{ C X } { . }
DSIGN { E X } HNUM PNUM <-- { . } HNUM
{ F X } { . }
{ B X } { 9 H }
{ D X }
' '
1<n<31

PDNUM <-- {PNUM} + DSIGN

Dezimalzahl (ungepackt oder gezont)

                         1<n<31
DNUM <-- {NUM} + D SIGN+ PNUM