@BlackJack:
Einrückung kann kein Interpreter/Compiler nachträglich für Dich erledigen wenn Du nicht irgendwie anders, zum Beispiel durch Klammern, Deine Absichten kundgetan hast.
Völlig klar, aber genau das muß man ja in vielen Sprachen tun. Und DANN kann der Compiler natürlich die Semantik erkennen und Code durch Einrückung "aufhübschen".
Ich kann in NATURAL z.B. folgendes Programm codieren - und das läuft dann:
Code: Alles auswählen
DEFINE DATA LOCAL
1 #I (I2)
1 #REST (I2)
1 #TEILER (I2)
END-DEFINE
*
FOR #I = 1 TO 12
DIVIDE 2 INTO #I GIVING #TEILER REMAINDER #REST
IF #REST = 0
WRITE #I 'ist gerade'
END-IF
END-FOR
END
Wenn ich aber irgendwann den editor-Befehl "struct" absetze, sieht der Code so aus, wie er sollte - es wird
automatisch richtig eingerückt, mit Berücksichtigung der verschiedenen logischen Ebenen:
Code: Alles auswählen
FOR #I = 1 TO 12
DIVIDE 2 INTO #I GIVING #TEILER REMAINDER #REST
IF #REST = 0
WRITE #I 'ist gerade'
END-IF
END-FOR
(In dieser Sprache sind eben nicht nur die Blockanfangsindikatoren - for, while, if, case, ... sondern auch die Blockendeindikatoren obligatorisch, so daß der Interpreter damit klarkommt.)
Das Bsp. ist natürlich Pipifax, aber bei längeren Programmen weiß man manchmal nicht mehr genau, auf welcher Schachtelungsbene man sich befindet und da fand ich diese Funktion gelegentlich doch ganz hilfreich.
Aber danke für den Hinweis auf die FAQs. (Ich kann halt nicht die gesamte Dokumentation an einem Tag lesen

)
Du verwechselst Einrückebene mit einer Anzahl von Leerraum-Zeichen. Eine Ebene wird durch die Spalte bestimmt an der aufeinanderfolgende, nicht-leere Zeilen beginnen und nicht durch die Spaltennummer an der eine einzelne Zeile beginnt.
Da muß ich jetzt was länger drüber nachdenken, aber ich glaube, das geht tatsächlich in die Richtung, die ich meinte, bzw. wo mir das rechte Verständnis noch fehlte.