Scriptaufbau

Hier sind die Namen der Subroutinen fix vorgegeben und die Subroutinen sind für das implementieren von bestimmten Funktionen vorgesehen.
Bei eigenen Subroutinen ist der Name frei («/xyz») und kann für die individuelle Programmierung verwendet werden.
Ermöglichen die Kontrolle des Output zur Laufzeit.

Standard-Subroutinen

F-Script verfügt über vordefinierte Standard-Subroutinen die in einer festgelegten Reihenfolge ausgeführt werden. Diese Subroutinen müssen in einem Script nicht zwingend vorhanden sein, typischerweise kommt aber mindestens eine dieser Subroutinen (/headerreport) in einem Script vor. Fehlt eine Subroutine, wird einfach die nächste vorhandene abgearbeitet.
Beachten Sie, dass Standard-Subroutinen üblicherweise für Dokument-Layouts verwendet werden.
Name
Beschreibung
Referenz
Diese Subroutine wird ganz am Anfang einer Scriptverarbeitung ein einziges Mal ausgeführt. Sie dient beispielsweise dazu, Drucker- und Tabulator-Initialisierungen vorzunehmen, die für die Verarbeitung nur ein einziges Mal ausgeführt werden müssen.
 
Auf der ersten Seite, aber nur wenn in "headerreport" keine Textausgabe stattfindet. Nach jedem Seitenumbruch auf der neuen Seite vor eventuellem "headercarry". Die Ausführung kann durch «HEADER(ON│OFF)» gesteuert werden.
«HEADER(ON│OFF)»
Subroutine für Überträge im Seitenkopfbereich. Wenn das für Überträge definierte Summenfeld «CARRY» mit "+" aufaddiert wird, verarbeitet F-Script diese Subroutine. Nach einem Seitenumbruch wird zuerst die Subroutine «/headerpage» und danach «/headercarry» abgearbeitet. Die Ausführung dieser Subroutine kann mit dem Befehl «CARRY(ON¦OFF)» gesteuert werden.
«CARRY»
Diese Subroutine wird für jeden einzelnen Datensatz ausgeführt.
 
Subroutine für Überträge im Seitenfussbereich. Wird vor jedem Seitenumbruch ausgeführt wenn das für Überträge definierte Summenfeld «CARRY» aktiv ist. Die Ausführung dieser Subroutine kann mit dem Befehl «CARRY(ON¦OFF)» gesteuert werden.
«CARRY»
Subroutine für Ausgaben im Seitenfuss. Sie wird vor jedem Seitenumbruch ausgeführt und gilt nicht für die letzte Seite. Die Ausführung dieser Subroutine kann mit «TOTALPAGE» gesteuert werden.
«TOTALPAGE»
Diese Subroutine wird ganz am Ende einer Scriptverarbeitung ein einziges Mal ausgeführt. Sie dient beispielsweise dazu, Totalisierungen oder Rekapitulationen auszugeben.

/headerreport

Beim Start einer Verarbeitung sucht F-Script zunächst diese Subroutine. Die Subroutine wird pro Verarbeitung des Scripts nur ein Mal aufgerufen. Plausibilisierungen von Eingaben, Selektionen, Initialsierungen, oder sonstiger für die Verarbeitung wichtige Informationen, sollten innerhalb dieser Subroutine durchgeführt werden.

Form

/headerreport

/

Beispiel

/headerreport
«nm1Umsatz für Jahr /nnnn/ ?(2010)»
«nm2Auswertung vom ?(«TODAY\D10»)»
/
In diesem Beispiel wird zunächst das auszuwertende Jahr abgefragt. Es wird das im Code vorerfasste Jahr 2010 vorgeschlagen. Die Eingabe wird mit "m1" im Zwischenspeicher «MEM(1)» abgelegt. Das "n" bewirkt, dass kein ungewollter Output gedruckt wird.
Dann wird abgefragt, mit welchem Datum die Auswertung erstellt werden soll. Es wird mit dem Befehl "TODAY" das Tagesdatum vorgeschlagen. Die Eingabe wird mit "m2" in den Zwischenspeicher «MEM(2)» abgelegt. Das "n" bewirkt, dass kein ungewollter Output gedruckt wird.

/headerpage

Diese Subroutine wird am Anfang jeder Seite ausgeführt. Damit kann beispielsweise der Druck der Kopfzeile erfolgen.

Form

/headerpage

/

Beispiel

/headerpage #5
Umsatz-Liste
für Jahr: «MEM(1)»
Auswertung vom: «MEM(2)\D8»
Name «40»Umsatz
/
Bevor die erste «/body»-Zeile auf einer Seite gedruckt wird, sucht das System den Aufruf «/headerpage». Befindet sich diese Subroutine im Script wird sie nun vor dem Output der ersten «/body»-Zeile abgearbeitet. Ist ein Seitenumbruch erfolgt, wird nach dem Seitenvorschub, wiederum vor der ersten «/body»-Zeile, diese Subroutine abgearbeitet. So können Kopfzeilen immer am Anfang einer Seite angedruckt werden.
"#n" bewirkt die Steuerung des vertikalen Tabulators. "n" steht für einen beliebigen numerischen Wert. Der Tabulator bewirkt, dass die kommenden Zeilen ab der mit "n" eingegebenen Zeile gedruckt werden. Wird der Tabulator auf eine bereits durch Daten "besetzte" Zeile gelegt, so wird er vom System ignoriert.

/headercarry

Subroutine für Überträge im Seitenkopfbereich. Wird das für Überträge definierte Summenfeld «CARRY» verwendet, so wird die Subroutine abgearbeitet.
Hinweis: Nach einem Seitenumbruch wird zuerst die Subroutine «/headerpage» und danach «/headercarry» abgearbeitet. Die Ausführung von «/headercarry» kann mit dem Befehl «CARRY(ON¦OFF)» übersteuert werden.

Form

/headercarry #,n

/

Beispiel

/headercarry
«LIB(CARRY│)»
«/LEERZEILE»
/
Nach einem Seitenumbruch und dem Abarbeiten der Subroutine «/headerpage», ruft das System die Subroutine «/headercarry» auf. In obigem Beispiel wird mit «LIB(CARRY│)» das Summenfeld angedruckt.

/body

Die Subroutine «/body» wird bei Dokumenten für jede Position und bei Listen für jeden gefundenen Eintrag aufgerufen.
Die Definition der Seitenkontrolle "#,n" ermöglicht die Steuerung des Seitenumbruchs (siehe "Seitenumbruch" weiter unten).

Form

/body #,n

/

Beispiel

/body #,3
«NAME\A30» «40»«VUMS(ADR,$,JAHR«MEM(1)»)\N12,.00t'»
/
Hier werden Kundenumsätze ausgedruckt. Handelt es sich, wie in diesem Beispiel, um eine Liste, wird die Subroutine «/body»pro Eintrag (Adresse) einmal aufgerufen bzw. abgearbeitet.
"#,3" bewirkt die Steuerung des Seitenumbruchs. Falls noch mindestens drei (#,3) Zeilen bis zum Seitenumbruch zur Verfügung stehen, wird der nächste Datensatz ausgedruckt. Stehen weniger als drei Zeilen zur Verfügung, wird der Seitenumbruch ausgelöst.
Wieviele Zeilen pro Seite und Blatt zur Verfügung stehen, wird in der Druckersteuerung erfasst. (Siehe auch Script Architektur)

/totalcarry

Subroutine für Überträge im Seitenfussbereich. Wird das für Überträge definierte Summenfeld «CARRY» verwendet, so wird die Subroutine abgearbeitet.
Hinweis: Vor einem Seitenumbruch wird zuerst die Subroutine «/totalcarry» und danach «/totalpage» abgearbeitet. Die Ausführung von «/totalcarry» kann mit dem Befehl «CARRY(ON¦OFF)» übersteuert werden.

Form

/totalcarry

/

Beispiel

/totalcarry
«LIB(CARRY│)»

/
Vor einem Seitenumbruch und vor dem Abarbeiten der Subroutine «/totalpage», ruft das System die Subroutine «/totalcarry» auf. In obigem Beispiel wird mit «LIB(CARRY│)» das Summenfeld angedruckt.

/totalpage

Diese Subroutine wird am Ende jeder Seite ausgeführt. Damit kann beispielsweise der Druck der Fusszeile erfolgen. Das gilt jedoch nicht für die letzte Seite.
Die Subroutine /totalpage ist für die Ausgabe des Seitenfuss zuständig. Vor jedem Seitenumbruch wird /totalpage ausgeführt. Sie gilt nicht für die letzte Seite.

Form

/totalpage

/

Beispiel

/totalpage
# Auf 3. unterste Zeile springen
#«(«PAGE(FEED)\N»-2)\N»
Fusszeilentext
/
Vor einem Seitenumbruch und nach dem Abarbeiten der Subroutine «/totalcarry», ruft das System die Subroutine «/totalpage» auf. In obigem Beispiel wird der Text "Fusszeilentext" angedruckt.

/totalreport

Diese Subroutine wird pro Verarbeitung des Scripts nur ein Mal ganz am Ende der Verarbeitung aufgerufen.

Form

/totalreport

/

Beispiel

/totalreport #,5
«10»Total «40»«SUM(1)\N12,.00t'»
***** Ende der Liste *****
/
Sind alle Datensätze im body abearbeitet und damit die Verarbeitung praktisch abgeschlossen, sucht das System die Subroutine "/totalreport" und führt sie aus.
Die Subroutine kann für das Bilden von Totalen, Rekapitulationen etc. verwendet werden.
In obigem Beispiel wird mit «SUM(1)» ein Summenfeld ausgegeben, welches beim Abarbeiten der einzelnen «/body»-Einträge aufsummiert wurde.

Eigene Subroutinen

Eigene Subroutinen erlauben eine auf ihre Bedürfnisse angepasste Strukturierung von F-Scripts. Da eigene Subroutinen nicht automatisch aufgerufen bzw. abgearbeitet werden, müssen sie explizit aufgerufen werden. Ein Aufruf sieht so aus:
«/Detail»
Oder als Teil einer Operation:
«LIST(ADR,/Detail)»
Wird eine Subroutine gem. obiger Syntax aufgerufen, muss sie sich innerhalb des aktiven F-Scripts befinden.
Es ist möglich innerhalb einer Subroutine den Aufruf einer weiteren Subroutine auszulösen. Beachten Sie, dass die Anzahl Verschachtelungen aus Gründen der Übersicht so klein wie möglich zu halten ist.

Form

«/Sub_Name»
/Sub_Name

/

Beispiel

/headerpage
Adressliste vom «TODAY\D10»
Adr.Nr. «8»Name «40»Ort
/

/body #,3
«ADRNR\N6» «8»«NAME\A30» «40»«ORT\A20»
«zKUNDEJN\I»«/KUNDENINFO»
/

/totalreport
***** Ende der Liste *****
«FF»
/

/KUNDENINFO
«8»Branche: «K-BRA\N4»
/
Falls es sich bei der aktiven Adresse um eine Kundenadresse handelt, so ist die Abfrage «zKUNDEJN\I» "true" und die Zeile wird abgearbeitet. Es wird die frei definierte Subroutine «/KUNDENINFO» aufgerufen. In dieser Subroutine wird nun die Branchen-Nr. der aktiven Adresse gedruckt.
Falls es sich bei der aktiven Adresse nicht um eine Kundenadresse handelt, so ist die Abfrage «zKUNDEJN\I» "false" und die Zeile wird nicht abgearbeitet. Es erfolgt somit kein Aufruf der Subroutine «/KUNDENINFO».

Seiten-Kontrollfunktionen

F-Script verfügt
Name
Beschreibung
Referenz
Am Schluss eines Scripts, üblicherweise in der Subroutine "/totalreport", kann ein Formfeed an den Drucker gesendet werden. Damit wird auch die letzte Seite korrekt ausgegeben.
Direkt bei der Subroutine kann mit #n ein Tabulator mit gegeben werden.
z.B. /totalpage #50
Dies bedeutet, dass die Subroutine /totalpage frühestens ab Zeile 50 gedruckt wird. Steht F-Script gerade auf der Zeile 45 werden zuerst 5 Leerzeilen ausgegeben. Sollte F-Script sich bereits auf Zeile 51 befinden, wird dieser Tabulator ignoriert.
Mit Seitenumbruch #,n kann kontrolliert werden ob eine Seite bereits umgebrochen werden muss. Diese Prüfung muss erfolgen, da ansonsten /headerpage, /headercarry, / totalcarry und /totalpage nie automatisch aufgerufen werden.

Formfeed «FF»

Am Schluss eines Scripts kann ein Formfeed an den Drucker gesendet werden. Damit wird auch die letzte Seite korrekt ausgegeben.

Beispiel richtig

/totalreport
***** Ende der Liste *****
«FF»
/

Beispiel falsch

/totalreport
***** Ende der Liste *****
«FF»



/
Diese Eingabe bewirkt nach dem Seitenvorschub («FF») einen weiteren Zeilenvorschub um 4 Leerzeilen. Wird beispielsweise gleich anschliessend eine Folgeliste gedruckt, kann dies zu unerwünschten Effekten (z.B. verschobene Seitenumbrüche) führen.

Vertikaler Tabulator #n

/totalpage #50
Dies bedeutet, dass die Subroutine «/totalpage» frühestens ab Zeile 50 ausgegeben wird. Steht das F-Script auf der Zeile 45 werden zuerst 5 Leerzeilen ausgegeben. Steht das F-Script bereits auf Zeile 51, wird dieser Tabulator ignoriert

Beispiel 1

/totalpage
# Auf Zeile 52 springen
#52
Text wird erst ab Zeile 52 gedruckt
/

Beispiel 2

/totalpage #52
Text wird erst ab Zeile 52 gedruckt
/

Seitenumbruch #,n

  • Ein Seitenumbruch wird im Script mit #,n gesteuert. Wird dies nicht gemacht, werden /headerpage, /headercarry, /totalcarry und /totalpage nie automatisch aufgerufen.
  • Aktivieren Sie den Seitenumbruch nur, wenn die Ausgabe auf einen korrekt definierten Drucker (mit plausiblen Blatt-/Seitenwerten) geht.
  • Aktivieren Sie keinen Seitenumbruch in den Subroutinen «/headerpage», «/totalcarry», oder «/totalpage». Diese Subroutinen können als Teil eines Seitenumbruch-Prozedere automatisch aufgerufen werden und müssen deshalb statisch (d.h. ohne Seitenkontrolle) definiert werden.
  • Senden Sie einen Formfeed nur dann, wenn die Ausgabe auf einen Drucker oder Bildschirm geht.

Beispiel 1

/body #,3

/
Dies bedeutet, dass die Subroutine «/body» nur dann ausgeführt wird, wenn noch mindestens drei Zeilen bis zum Seitenende verbleiben.

Beispiel 2

/body
# Sind noch 10 Zeilen frei? 
#,10
«/Detail»
/
Eine Prüfung auf den Seitenumbruch kann beliebig oft und auch mitten in einer Subroutine durchgeführt werden.