Das mit den proceduren stimmt so nicht ganz. In Purebasic ist alles ebenfalls seeeehr in Proceduren unterteilt, ich für meinen Teil habe keinen wirklichen Code mehr in der Hauptschleife, sondern rufe nur noch Proceduren auf.

Und diese können genauso Werte zurückgeben, und Parameter enthalten, somit lassen sich selbst eigene Befehle schreiben. Als Beispiel:

Code:
;
; by Danilo, 21.07.2003 - german forum
;
; resize ScrollArea in ScrollAreaGadget at runtime, PB 3.70.
;


Procedure ResizeScrollArea(gadget,ScrollAreaWidth,ScrollAreaHeight)
  Structure PB_ScrollAreaData
    ScrollAreaChild.l;
    ScrollStep.l;
  EndStructure
  hScrollArea = GadgetID(gadget)
  *SAGdata.PB_ScrollAreaData = GetWindowLong_(hScrollArea,#GWL_USERDATA)
  If *SAGdata
    GetClientRect_(hScrollArea,client.RECT)
    MoveWindow_(*SAGdata\ScrollAreaChild,0,0,ScrollAreaWidth,ScrollAreaHeight,#TRUE)
    SI.SCROLLINFO
    SI\cbSize = SizeOf(SCROLLINFO);
    SI\fMask  = #SIF_PAGE|#SIF_POS|#SIF_RANGE;
    SI\nMin   = 0;
    SI\nMax   = ScrollAreaHeight-1;
    SI\nPage  = client\bottom;
    SI\nPos   = 0;
    SetScrollInfo_(hScrollArea,#SB_VERT,@SI,#TRUE);
    SI\nMax   = ScrollAreaWidth-1;
    SI\nPage  = client\right;
    SetScrollInfo_(hScrollArea,#SB_HORZ,@SI,#TRUE);
  EndIf
EndProcedure

Mehr als das hier:
Code:
  ResizeScrollArea(1,510,510)
muss nicht aufgerufen werden, um die neue Größe für den Scrollbereich #1 auf die beiden Parameter zu ändern. Somit kann man die Procedure in einer included Datei aufbewahren, dadurch wird alles sehr übersichtlich, und mehr als diese kleine Zeile, wie ein interner Befehl, wird auch nicht benötigt.

Du siehst also, man kann sich damit durchaus selbst "Befehle" erstellen, mit beliebig vielen Parametern oder daraus Werte zurückliefern.