Source-Units

Neben der Anweisung gibt es noch weitere Einheiten verschiedener Größe, in die ein Programm-Text zerlegt werden kann. Der CXdb kennt fünf solcher sogenannter ''Source Units'':

Expression: die kleinste Einheit, umfaßt jeweils einen Teilausdruck, aus der sich eine Anweisung zusammensetzt
Statement: Anweisung, der Default-Wert
Block: eine Folge von Anweisungen, die den Rumpf einer Routine, einer Schleife oder sonstiger bedingter Ausdrücke (if, case, ...) umfaßt
Loop: eine Folge von Anweisungen, bestehend aus einem Block und einer umschließenden Schleifen-Konstruktion
Routine: ein Unterprogramm oder eine Funktion


Um zu sehen, wie ein Programm in solche ''Source Units'' zerlegt wird, sehen wir uns als Beispiel die Zeile 33 in gaussj.f an. Mit dem Kommando ''info line 33'' erhalten wir eine Tabelle, die alle Source-Units angibt, die in dieser Zeile beginnen. In diesem Fall ergibt sich:
  Id Address Boundaries Start End Kind  
1. ( 30) 8000141e:80001422 33 x 21 33 x 21 $<$EXPR$>$ 1
2. ( 29) 8000141e:80001428 33 x 19 33 x 21 $<$STMT$>$ K=1
3. ( 31) 80001416:8000141a 33 x 23 33 x 23 $<$EXPR$>$ N
4. ( 28) 80001416:8000151e 33 x 13 43 x 20 $<$LOOP$>$ DO 12 K=1,N $<\ldots>$ 12 CONTINUE
5. ( 27) 80001416:8000151e 33 x 13 44 x 15 $<$BLOCK$>$ DO 12 K=1,N $<\ldots>$ ENDIF
Für jede Source-Unit ist folgendes angegeben: ihre Id, die Adressen im Programm, die sie umfaßt, der Bereich im Source-Code (Beginn und Ende jeweils in der Form Zeile x Spalte), die Art der Unit und der entsprechende Code. Die Größen ''1'' und ''N'' sind also Ausdrücke (''Expressions''), ''K=1'' ist eine Anweisung (''Statement''), die DO-Schleife (''Loop'') bis zur Zeile 43 ist offensichtlich, und schließlich bildet der ''THEN''-Teil der IF-Anweisung in Zeile 32 einen Block, der den Bereich der Zeilen 33 - 44 umfaßt.

previous    contents     next

Peter Junglas 18.10.1993