FrameMaker automatisieren: Sauber skripten

Seit 10 Jahren biete ich Schulungen zur FrameScript-Programmierung an. Nein, falsch, es geht nicht ums Programmieren, es geht darum, FrameMaker-Prozesse zu automatisieren. Und der Einstieg dazu ist nunmal immer noch die Skript-Programmierung. Wenn ich manchmal im frame_dev-Forum mitlese, wie kompliziert bestimmte Aktionen bei der Programmierung in C ausfallen (und dass sich der Programmierer auch um das Freigeben nicht benötigten Speichers kümmern muss), dann bin ich dankbar für FrameScript.

Einschub: So dankbar ich für FrameScript bin, so gerne nutze ich für bestimmte Aufgaben auch »echte« C-Plug-ins mit FrameMaker, insbesondere mit strukturierten Dokumenten. Zum Beispiel AXCM, InsetPlus, FrameSLT

Bei diesen Schulungen fällt immer wieder auf, dass FrameScript keine Deklaration der Variablen erfordert, man kann einfach schreiben

Set lvValues = MyFunction{};

und die Variable lvValues wird den Datentyp des Ergebnisses der Funktion MyFunction annehmen. Was einerseits sehr praktisch zu sein scheint, führt aber beim kleinsten Tippfehler im Namen einer Variable oft nicht zu einem gemeldeten Fehler, sondern schlicht zu unerwartetem Verhalten des Skripts. Tipps ich ein paar Zeilen weiter beispielsweise

Display lvValue;

bekomme ich diese wenig aussagekräftige Anzeige, weil ich das Plural-s beim Variablenbezeichner »vergessen« habe.

Es gibt aber eine Möglichkeit, solche Fehler melden zu lassen, und ich möchte heute dazu aufrufen, diese Möglichkeit sehr diszipliniert zu verwenden. Seit einigen Versionen gibt es die Session-Variable DeclareVarMode, die dazu verwendet werden kann, dass alle Variablen explizit entweder als Local oder als GlobalVar deklariert werden müssen. Folgende zwei Zeilen gehören in jedes Skript:

Set DeclareVarMode = True;
Set PlatformEncodingMode = True;

(Wegen der Rückwärtskompatibilität sind beide nicht standardmäßig gesetzt; den PlatformEncodingMode können Sie ignorieren, wenn Sie für FrameMaker 8 oder später im UTF-8-Mode programmieren.)

Und dann natürlich in jede Funktion oder Subroutine die entsprechenden Anweisungen Local oder GlobalVar.

Haben Sie das bereits ausprobiert? Wie sind Ihre Erfahrungen? Wie lange haben Sie schon nach Fehlern gesucht, nur um schließlich feststellen zu müssen, dass Sie sich bei einem Variablen-Bezeichner vertippt haben…

XML-Konferenz in Prag

Konferenz-Tipp

Ich habe mich schon nach Ende der letztjährigen Konferenz (von der ich zu spät erfuhr) entschlossen, nach Möglichkeit die diesjährige Ausgabe der XMLPrague (13.+14.3.2010) zu besuchen, und zwar nicht weil Prag relativ nah liegt, sondern weil unter den Vortragenden einige quasi Bekannte waren, die mir vor allem in der xsl-list immer wieder mit hochkompetenten Beiträge aufgefallen sind. Die bekanntesten Namen sind in diesem Jahr wohl:

Aktuell wurde die Liste der Beiträge veröffentlicht, und schon allein von den Überschriften finde ich interessant: Weiter lesen »

Stichwortverzeichnisse erstellen

Seit dem ich auf der tekom-Frühjahrstagung 2003 (in Hamburg) einen Beitrag mit dem Titel »Volltextsuche oder Stichwortverzeichnis, was ist besser?« gehalten habe, verfolge ich alles zu diesem Thema mit Interesse. So auch das Titelthema der aktuellen Ausgabe der Zeitschrift technische kommunikation (Heft 1/10), in der Frau Bettina Zastrow mit dem Beitrag »Gute Stichwortverzeichnisse erstellen« vertreten ist.

Mit fast allen Tipps und Ratschlägen des Artikels bin ich einverstanden, auch wenn der Schlüssel von 10 Personentagen Aufwand für die Verschlagwortung von 100 Seiten jedem derartigen Ansinnen den Gar aus machen wird.

Ganz und gar nicht einverstanden bin ich mit Folgendem:

Wie viele Seitenverweise pro Eintrag soll es geben?
Empfehlung: Ein bis drei, maximal vier.

Das ist arg traditionell und stammt aus der Zeit, als man die Länge von Stichwortverzeichnissen schon aus Kostengründen beschränken musste und die Finger der linken Hand ausreichten, diese an bis zu vier Stellen zwischen die Seiten zu stecken, um dann deren Relevanz zu beurteilen.

Aber hallo! Ganz praktisch: Wie stecken Sie Finger zwischen die Seiten einer PDF-Datei oder Topics einer Onlinehilfe? Weiter lesen »

Zweimal geschütztes Leerzeichen

Adobe FrameMaker 9 IconAdobe FrameMaker 8 Icon

Als alter Hase war mir (und anderen) eine Besonderheit von FrameMaker schon lange in Fleisch und Blut übergegangen: Sobald ein Wort in Kontakt mit einem Sonderzeichen, insbesondere dem geschützten Leerzeichen (Strg+Lz) kam, wurde es für die automatische Silbentrennung nicht mehr berücksichtigt.

Am Rande bemerkt: Über die Qualität jeglicher Silbentrennungsalgorithmen kann man durchaus verschiedener Meinung sein…

Im Rahmen der Tests der Unicode-fähigen Version 8 war mir aufgefallen, dass sich das geschützte Leerzeichen auf zwei Arten erstellen lässt: Weiter lesen »

Je größer, desto…

Gebhard Fugel: David gegen Goliath

Je größer, desto besser? Eigenartige Nachrichten zu einem Y2010-Problem lesen wir in diesen Tagen, z.B. auf heise.de. Dahinter stecken die ca. 30 Millionen ausgelieferten Karten eines Herstellers. 30 Millionen, wow! Oder? Ein Programmierfehler, den weder die Qualitätskontrolle der Firma noch diverse Stellen auf Seiten der Banken erkannt haben. Hätten diese das erkennen müssen oder wiegten sich alle nach überstandenem Y2K-Wechsel in Sicherheit? Egal, was mich mehr erschüttert: Ich bin nicht überrascht, ganz und gar nicht!

Achtung, Verschwörungstheorie! Man muss als Unternehmen möglichst schnell eine »systemrelevante« Größe erreichen. Dann darf man die Gewinne ungestraft privat vereinnahmen, im Verlustfall werden diese dann von der Gesellschaft aufgefangen, sozialisiert. Ich sehe hier eine Aufgabe für die Kartellbehörden: Kann ein Konzern denn auch für den größtmöglich anzunehmenden Schaden gerade stehen?

Was hat das nun mit Dokumentations-Technologie oder FrameMaker zu tun?

Weiter lesen »

Lecker Adventskalender

If you can see this, then you might need a Flash Player upgrade or you need to install Flash Player if it's missing. Get Flash Player from Adobe.

Und herzlichen Dank auch an alle anderen, die mir Weihnachtskarten und/oder Adventskalender haben zukommen lassen!

Schöne Feiertage!