Engine Room - V1N2 (German): Difference between revisions

From OS2World.Com Wiki
Jump to navigation Jump to search
Created page with "Engage <br> Major Weenies Maschinenraum<br> Ein Haufen Leute haben Major Weenie gefragt: "Wenn Warp so toll ist, warum bringt es da..."
 
Jugbogdan (talk | contribs)
mNo edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Image:engine.gif|Engage]] <br> [[Image:weenie.gif|Major Weenies Maschinenraum]]<br>
[[Image:engine.gif|Engage]]
[[Image:weenie.gif|Major Weenies Maschinenraum]]
Ein Haufen Leute haben Major Weenie gefragt: "Wenn Warp so toll ist, warum bringt
es dann keine eingebaute Programmiersprache mit ?"<br>
<br>


Offensichtlich haben sich diese Leute nicht die M&uuml;he gemacht, den Kern von Warp
Ein Haufen Leute haben Major Weenie gefragt: "Wenn Warp so toll ist, warum bringt es dann keine eingebaute Programmiersprache mit?"
zu &uuml;berpr&uuml;fen, sonst h&auml;tten sie eine der besten Batch-, Skript- und Allround Programmiersprachen
entdeckt, die jemals mit jeder Kopie von Warp durch die gro&szlig;e Barriere gekommen
ist: REXX.<br>
<br>
 
REXX, eine IBM FLA ('''''F'''our '''L'''etter '''A
'''cronym'' : Vier Buchstaben Acronym) Sprache, bedeutet '''''RE
'''structured e'''X'''tended e'''X'''ecutor''
(neu aufgebauter, erweiterter Ausf&uuml;hrer). REXX wurde im Fr&uuml;hling 1979 von einem
IBMer namens Mike Cowlishaw im U.K. zusammengebaut. Um ganz offen aus dem Vorwort
zu ''The REXX Handbook'' (von Gabriel Goldberg und Philip H. Smith III, McGraw-Hill,1992)
zu stehlen: "REXX ist so gut, weil so viel davon offensichtlich ist;" (deswegen
gef&auml;llt es Major Weenie auch so gut) "es ist elegant und geradeheraus zu benutzen und
leicht zu lernen." REXX begann sein Leben auf IBMs VM Systemen, fand seinen
Weg zu VMS, dann OS/2 1.x, dann irgendwann auf AIX (IBMs UNIX), dann zum OS/400
Betriebssystem, das man auf AS/400 midrange Systemen finden konnte, und zuletzt
auf dem IBM PC DOS 7. Es wurde auch dem American National Standards Insitut vorgelegt,
um es als Computer Batch Sprachstandard annehmen zu lassen.<br>
<br>


Wenn sie sich an einem Punkt entscheiden sollten, sich wirklich tief mit REXX
Offensichtlich haben sich diese Leute nicht die Mühe gemacht, den Kern von Warp zu überprüfen, sonst hätten sie eine der besten Batch-, Skript- und Allround Programmiersprachen entdeckt, die jemals mit jeder Kopie von Warp durch die große Barriere gekommen ist: REXX.
zu besch&auml;ftigen, sollten sie sich mit IBM in Verbindung setzen und eine Kopie
eines ihrer Redbooks beschaffen, genannt ''OS/2 REXX: From Bark to Byte'', das,
mal abgesehen von vielen guten Programmbeispielen, exzellente Tips dar&uuml;ber enth&auml;lt,
wie man REXX Code so plattformunspezifisch programmiert, wie m&ouml;glich (in anderen Worten,
wie man ein REXX Programm schreibt, das in allen Pl&auml;tzen, an denen man REXX finden kann,
mit so wenigen &Auml;nderungen, wie m&ouml;glich l&auml;uft).<br>
<br>


Es bleibt unausweichlich, da&szlig; jemand Major Weenie vor seinem Abgang fragt:
REXX, eine IBM FLA ('''''F'''our '''L'''etter '''A'''cronym'' : Vier Buchstaben Acronym) Sprache, bedeutet '''''RE'''structured e'''X'''tended e'''X'''ecutor'' (neu aufgebauter, erweiterter Ausführer). REXX wurde im Frühling 1979 von einem IBMer namens Mike Cowlishaw im U.K. zusammengebaut. Um ganz offen aus dem Vorwort zu ''The REXX Handbook'' (von Gabriel Goldberg und Philip H. Smith III, McGraw-Hill,1992) zu stehlen: "REXX ist so gut, weil so viel davon offensichtlich ist;" (deswegen gefällt es Major Weenie auch so gut) "es ist elegant und geradeheraus zu benutzen und leicht zu lernen." REXX begann sein Leben auf IBMs VM Systemen, fand seinen Weg zu VMS, dann OS/2 1.x, dann irgendwann auf AIX (IBMs UNIX), dann zum OS/400
"Ok, wenn REXX so toll ist, was kann man damit anstellen ?". Im Fall von Warp
Betriebssystem, das man auf AS/400 midrange Systemen finden konnte, und zuletzt auf dem IBM PC DOS 7. Es wurde auch dem American National Standards Institut vorgelegt, um es als Computer Batch Sprachstandard annehmen zu lassen.
w&auml;re eher die Frage angebracht, was man damit NICHT anstellen kann.<br>
<br>


Nun, zum einen kann man damit wirklich keine Workplace Shell Anwendungen
Wenn sie sich an einem Punkt entscheiden sollten, sich wirklich tief mit REXX zu beschäftigen, sollten sie sich mit IBM in Verbindung setzen und eine Kopie eines ihrer Redbooks beschaffen, genannt ''OS/2 REXX: From Bark to Byte'', das, mal abgesehen von vielen guten Programmbeispielen, exzellente Tips darüber enthält, wie man REXX Code so plattformunspezifisch programmiert, wie möglich (in anderen Worten, wie man ein REXX Programm schreibt, das in allen Plätzen, an denen man REXX finden kann, mit so wenigen Änderungen, wie möglich läuft).
schreiben, obwohl es eine rudiment&auml;re Popup Dialogbox enth&auml;lt, die man aus einem
REXX exe aufrufen kann. Am Ende der Kolumne wird Major Weenie ihnen einen netten
Scherz mit dieser Dialogbox anvertrauen, mit dem er vor Jahren die Frischlinge
von der Akademie gefoppt hat.<br>
<br>
 
Selbst ohne ein WPS Interface bleiben unz&auml;hlige Dinge, die man mit REXX anstellen
kann, aber r&auml;umen wir erst mal ein wenig Geschwafel &uuml;ber Programmkonventionen
aus dem Weg. Wie sie in der Online REXX Anleitung feststellen werden, m&uuml;ssen
ALLE REXX Programme mit einem Kommentar anfangen. In einem REXX Programm ist
alles zwischen einem ''slash asterisk'' ('''/*''') und einem
''asterisk slash'' ('''*/''') ein Kommentar. Kommentare
k&ouml;nnen in Kommentare eingebettet (nested) werden. In Warp ist ein REXX Programm
ein einfaches Textfile mit einer .CMD Erweiterung.<br>
<br>


An diesem Punkt spritzt sich einer der Schlaffis an den Replikatoren normalerweise
Es bleibt unausweichlich, daß jemand Major Weenie vor seinem Abgang fragt:
mit Traubensaft voll und will wissen, ob die STARTUP.CMD im Wurzelverzeichnis
 
ihres Warp Systems auch eine REXX exe ist. Wahrscheinlich nicht, aber es k&ouml;nnte
"Ok, wenn REXX so toll ist, was kann man damit anstellen ?". Im Fall von Warp wäre eher die Frage angebracht, was man damit NICHT anstellen kann.
sein. Sie haben gute Chancen, da&szlig;, wenn sie eine STARTUP.CMD haben, das ganze
 
nur ein einfaches, altes Batch-File ist. Sie k&ouml;nnen es leicht feststellen,  
Nun, zum einen kann man damit wirklich keine Workplace Shell Anwendungen schreiben, obwohl es eine rudimentäre Popup Dialogbox enthält, die man aus einem REXX exe aufrufen kann. Am Ende der Kolumne wird Major Weenie ihnen einen netten Scherz mit dieser Dialogbox anvertrauen, mit dem er vor Jahren die Frischlinge von der Akademie gefoppt hat.
indem sie es mit einem Editor &ouml;ffnen und nach dem bezeichnenden Anfangskommentar
 
suchen.<br>
Selbst ohne ein WPS Interface bleiben unzählige Dinge, die man mit REXX anstellen kann, aber räumen wir erst mal ein wenig Geschwafel über Programmkonventionen aus dem Weg. Wie sie in der Online REXX Anleitung feststellen werden, müssen ALLE REXX Programme mit einem Kommentar anfangen. In einem REXX Programm ist alles zwischen einem ''slash asterisk'' ('''/*''') und einem ''asterisk slash'' ('''*/''') ein Kommentar. Kommentare können in Kommentare eingebettet (nested) werden. In Warp ist ein REXX Programm ein einfaches Textfile mit einer .CMD Erweiterung.
<br>
 
An diesem Punkt spritzt sich einer der Schlaffis an den Replikatoren normalerweise mit Traubensaft voll und will wissen, ob die STARTUP.CMD im Wurzelverzeichnis ihres Warp Systems auch eine REXX exe ist. Wahrscheinlich nicht, aber es könnte sein. Sie haben gute Chancen, daß, wenn sie eine STARTUP.CMD haben, das ganze nur ein einfaches, altes Batch-File ist. Sie können es leicht feststellen, indem sie es mit einem Editor öffnen und nach dem bezeichnenden Anfangskommentar suchen.
 
Wenn sie sich dazu entscheiden, tief in die REXX Programmierung in Warp einzusteigen (oder sonstwo, wenn man es genau nimmt), kann ein guter Editor einen großen Unterschied ausmachen. IBM hat die REXX Programmierer nicht vergessen: Schauen sie sich mal den '''Enhanced Editor''' (EPM) im Produktivitätsordner an.
Wenn sie das gerade editierte File als CMD File identifizieren, wird EPM einige rudimentäre Syntax Komplettierungen für sie ausführen.
 
Einer der besten Wege, um mit REXX anzufangen, ist die Nutzung des ''REXXTRY'' Kommandos, das in Warp eingebaut wurde, zusammen mit der Online REXX Information. Geben sie an einer OS/2 Kommandozeile '''rexxtry''' ein, so werden sie folgendes sehen:
<pre>
REXXTRY.CMD lets you interactively try REXX statements.
Each string is executed when you hit Enter.
Enter 'call tell' for a description of the features.
Go on - try a few...            Enter 'exit' to end.
</pre>
Wenn sie '''call tell''' wie vorgegeben eingeben, werden sie folgendes sehen:
<pre>
/* SAA-portable REXXTRY procedure    11/08/91  version 1.05
  Owned by IBM SAA REXX Development, Endicott, New York.
    Loosely derived from an ancient formulation of Mike Cowlishaw.
  This procedure lets you interactively try REXX statements.
    If you run it with no parameter, or with a question mark
    as a parameter, it will briefly describe itself.
  You may also enter a REXX statement directly on the command line
    for immediate execution and exit.  Example:  rexxtry call show
  Enter 'call show' to see user variables provided by REXXTRY.
  Enter '=' to repeat your previous statement.
  Enter '?' to invoke system-provided online help for REXX.
  The subroutine named 'sub' can be CALLed or invoked as 'sub()'.
  REXXTRY can be run recursively with CALL.
  Except for the signal instructions after a syntax error, this
    procedure is an example of structured programming.
  The 'clear' routine illustrates system-specific SAA-portable coding.
*/
  rc = 0 ......................................... REXXTRY.CMD on OS/2
</pre>
Kapiert?


Wenn sie sich dazu entscheiden, tief in die REXX Programmierung in Warp einzusteigen
(oder sonstwo, wenn man es genau nimmt), kann ein guter Editor einen gro&szlig;en Unterschied
ausmachen. IBM hat die REXX Programmierer nicht vergessen: Schauen sie sich
mal den '''Enhanced Editor''' (EPM) im Produktivit&auml;tsordner an.
Wenn sie das gerade editierte File als CMD File identifizieren, wird EPM einige
rudiment&auml;re Syntax Komplettierungen f&uuml;r sie ausf&uuml;hren.<br>
<br>
 
Einer der besten Wege, um mit REXX anzufangen, ist die Nutzung des
''REXXTRY'' Kommandos, das in Warp eingebaut wurde, zusammen mit der Online
REXX Information. Geben sie an einer OS/2 Kommandozeile '''rexxtry''' ein, so
werden sie folgendes sehen:<br>
<br> '''REXXTRY.CMD lets you interactively try REXX statements.<br>
  Each string is executed when you hit Enter.<br>
    Enter 'call tell' for a description of the features.<br>
Go on - try a few...            Enter 'exit' to end.<br>
<br>
'''
 
Wenn sie '''call tell''' wie vorgegeben eingeben, werden sie folgendes sehen:<br>
<br> '''/* SAA-portable REXXTRY procedure    11/08/91  version 1.05<br>
  Owned by IBM SAA REXX Development, Endicott, New York.<br>
    Loosely derived from an ancient formulation of Mike Cowlishaw.<br> <br>
  This procedure lets you interactively try REXX statements.<br>
    If you run it with no parameter, or with a question mark<br>
    as a parameter, it will briefly describe itself.<br>
  You may also enter a REXX statement directly on the command line<br>
    for immediate execution and exit.  Example:  rexxtry call show<br> <br>
  Enter 'call show' to see user variables provided by REXXTRY.<br>
  Enter '=' to repeat your previous statement.<br>
  Enter '?' to invoke system-provided online help for REXX.<br>
  The subroutine named 'sub' can be CALLed or invoked as 'sub()'.<br>
  REXXTRY can be run recursively with CALL.<br> <br>
  Except for the signal instructions after a syntax error, this<br>
    procedure is an example of structured programming.<br>
  The 'clear' routine illustrates system-specific SAA-portable coding.<br>
*/<br>
  rc = 0 ......................................... REXXTRY.CMD on OS/2<br>
'''<br>
 
Kapiert?<br>
<br>
 
Wenn sie lieber von der Workplace Shell aus arbeiten, daran hat IBM auch gedacht.
Wenn sie lieber von der Workplace Shell aus arbeiten, daran hat IBM auch gedacht.
Es gibt eine GUI REXX Funktionsbibliothek, PMREXX(sie mu&szlig; die Dialogboxfunktion
Es gibt eine GUI REXX Funktionsbibliothek, PMREXX (sie muß die Dialogboxfunktion benutzen). Wenn sie 'pmrexx rexxtry' in einer Kommandozeile eingeben, können sie genau dieselben Dinge anstellen, nur in einem GUI Fenster. Außerdem bekommen sie so die Möglichkeit, die Ausgaben in ein File abzuspeichern, sollten sie also an etwas problematischem arbeiten, können sie das PMREXX Interface benutzen, um das tracing anzuschalten und die Ausgaben so in ein File abzuspeichern, in dem sie dann die Routine 'glätten' können.
benutzen). Wenn sie 'pmrexx rexxtry' in einer Kommandozeile eingeben, k&ouml;nnen
 
sie genau dieselben Dinge anstellen, nur in einem GUI Fenster. Ausserdem bekommen
An diesem Punkt könnte Major Weenie in etwas Pipifax-ähnlichen Kram eintauchen, aber er erwartet von ihnen, daß sie das schon an der Akademie gelernt haben, oder, wenn nicht,
sie so die M&ouml;glichkeit, die Ausgaben in ein File abzuspeichern, sollten sie also
dann durch REXXTRY die Grundzüge herausgefunden haben.
an etwas problematischem arbeiten, k&ouml;nnen sie das PMREXX Interface benutzen, um  
 
das tracing anzuschalten und die Ausgaben so in ein File abzuspeichern, in dem
Nun, bevor wir zu dem Scherz kommen, wie wäre es mit etwas nützlichem?
sie dann die Routine 'gl&auml;tten' k&ouml;nnen.<br>
 
<br>
Ein echter Warp Anhänger weiß über die Nutzung der Alt-F1 Tastenkombination beim Booten Bescheid, um in den Auswahlbildschirm zu kommen. Die meisten Anwender wissen aber nicht, daß es einen Weg gibt, diesen Bildschirm so anzupassen, daß man etwas anderes als die vorgespeicherten Backups laden kann. (Schauen sie im Hauptindex nach '''config.sys''', folgen sie dann den Anweisungen unter '''Verwenden von Wiederherstellungsoptionen beim Neustart''', um etwas über die Anpassung des Bildschirms zu lernen.)
 
 
An diesem Punkt k&ouml;nnte Major Weenie in etwas Pipifax-&auml;hnlichen Kram eintauchen,
Eines der nützlichen Dinge, die ich gelernt habe, ist, daß man OS/2 mit einer regulären config.sys booten kann, ohne die Workplace Shell zu laden. Das ist einfach zu schaffen und noch einfacher, wenn man es mit REXX automatisiert.
aber er erwartet von ihnen, da&szlig; sie das schon an der Akademie gelernt haben, oder, wenn nicht,
dann durch REXXTRY die Grundz&uuml;ge herausgefunden haben.<br>
<br>


Nun, bevor wir zu dem Scherz kommen, wie w&auml;re es mit etwas n&uuml;tzlichem?<br>
Um in eine Kommandozeile zu booten, ersetzen sie einfach
<br>
PROTSHELL=C:\OS2\CMD.EXE
 
mit der Zeile
Ein echter Warp Anh&auml;nger wei&szlig; &uuml;ber die Nutzung der Alt-F1 Tastenkombination beim
PROTSHELL=C:\OS2\PMSHELL.EXE
Booten Bescheid, um in den Auswahlbildschirm zu kommen. Die meisten Anwender wissen
in ihrer config.sys. (Bedenken sie, daß sie den Laufwerksbuchstaben anpassen müssen, wenn sie OS/2 auf einer anderen Partition als C: installiert haben.)
aber nicht, da&szlig; es einen Weg gibt, diesen Bildschirm so anzupassen, da&szlig; man
etwas anderes als die vorgespeicherten Backups laden kann. (Schauen sie im
Hauptindex nach '''config.sys''', folgen sie dann den Anweisungen
unter '''Verwenden von Wiederherstellungsoptionen beim Neustart''',
um etwas &uuml;ber die Anpassung des Bildschirms zu lernen.)<br>
<br>
 
Eines der n&uuml;tzlichen Dinge, die ich gelernt habe, ist, da&szlig; man OS/2 mit einer
regul&auml;ren config.sys booten kann, ohne die Workplace Shell zu laden. Das ist
einfach zu schaffen und noch einfacher, wenn man es mit REXX automatisiert.
Um in eine Kommandozeile zu booten, ersetzen sie einfach<br> '''PROTSHELL=C:\OS2\CMD.EXE'''<br>
mit der Zeile<br> '''PROTSHELL=C:\OS2\PMSHELL.EXE'''<br>
in ihrer config.sys. (Bedenken sie, da&szlig; sie den Laufwerksbuchstaben anpassen m&uuml;ssen,
wenn sie OS/2 auf einer anderen Partition als C: installiert haben.)<br>
<br>


Teil dieses alternativen Boots ist es, dieser alternativen config.sys einen
Teil dieses alternativen Boots ist es, dieser alternativen config.sys einen spezifischen Namen zu geben und sie im \OS2\BOOT Verzeichnis zu plazieren und gleichzeitig das File '''ALTF1BOT.SCR''' zu updaten, damit es auf diese neue config.sys zeigt. Alle veränderten config.sys Files enden mit einem einzelnen Buchstaben, der auf den Buchstaben verweist, der als Auswahl im Alt-F1 Bildschirm auftaucht.
spezifischen Namen zu geben und sie im \OS2\BOOT Verzeichnis zu plazieren und
gleichzeitig das File '''ALTF1BOT.SCR''' zu updaten, damit es auf
diese neue config.sys zeigt. Alle ver&auml;nderten config.sys Files enden mit einem
einzelnen Buchstaben, der auf den Buchstaben verweist, der als Auswahl im Alt-F1
Bildschirm auftaucht.<br>
<br> '''Achtung: L&ouml;schen sie nie das File namens CONFIG.X im OS2\BOOT Unterverzeichnis!
Das ist das File, das geladen wird, wenn sie ''zu einer Kommandozeile booten'' im
Alt-F1 Bildschirm anw&auml;hlen.'''<br>
<br>
 
Config.x ist sch&ouml;n und gut als Kommandozeilen Boot Auswahl, aber wenn sie
auf wahrscheinlich gar nichts einen Zugriff haben, ist '''config.x'''
das allererste config.sys File auf ihrem System.<br>
<br>


In meinem Fall habe ich den Buchstaben '''P''' als K&uuml;rzel f&uuml;r ''plain''
'''Achtung: Löschen sie nie das File namens CONFIG.X im OS2\BOOT Unterverzeichnis! Das ist das File, das geladen wird, wenn sie ''zu einer Kommandozeile booten'' im Alt-F1 Bildschirm anwählen.'''
gew&auml;hlt, um meine Workplace Shell-lose Konfiguration zu kennzeichnen. Ich, als
Major Weenie, wechsele meine config.sys &ouml;fters und da ich zu faul bin, um die ''
config.p'' jedesmal von Hand zu &auml;ndern, schrieb ich dieses einfache exe, das sie
gerne von mir klauen k&ouml;nnen.<br>
<br> '''
/* Kreiert eine 'plain' config.sys */        /* <-- das ist der f&uuml;hrende Kommentar */<br>
'@c:'                          /* <-- Betriebssystem Funktionen werden<br>
                                    in einzelne Hochkommas eingeschlossen */<br>
'@cd\os2\boot'<br>
'@if exist config.p del config.p'<br>
dat = 'PROTSHELL=C:\OS2\CMD.EXE'  /* einfache Deklarationen */<br>
Prot = 'protshell'<br>
Tablein = 'PROTSHELL'<br>
Tableout = 'protshell'<br>
File = 'C:\CONFIG.SYS'<br>
Out = 'CONFIG.P'<br>
RC = Linein(File,,0)    /* <-- &ouml;ffnet ein File f&uuml;r Eintr&auml;ge; es gibt andere Wege */<br>
RC = Lineout(Out,,1)    /* <-- &ouml;ffnet ein File f&uuml;r Ausgabe; dito */<br>
Do While Lines(File) > 0<br>
        RC = Linein(File)<br>
        Temp = RC<br>
        Test = Left(Temp, 9)<br>
        Test = Translate(Test, Tableout, Tablein)<br>
                /* &uuml;bersetzt alle Eingaben in Kleinschrift bevor<br>
                  sie verglichen werden,um herauszufinden, ob es die PROTSHELL<br>
                  Zeile ist, nach der ich suche...      */<br>
        If Test = Prot Then<br>
                Do<br>
                        RC = Lineout(Out, Dat)<br>
                        Iterate<br>
                End /* Do */<br>
        RC = Lineout(Out, Temp)<br>
End /* Do */<br>
RC = Lineout(Out)<br>
RC = Stream(File, 'C', 'Close')<br>
Exit 0<br>
<br>
'''


Nun, das EXIT Kommando ist nicht unbedingt n&ouml;tig, weil das Programm sich einfach
Config.x ist schön und gut als Kommandozeilen Boot Auswahl, aber wenn sie auf wahrscheinlich gar nichts einen Zugriff haben, ist '''config.x''' das allererste config.sys File auf ihrem System.
so beenden wird. Aber Major Weenie hat einige Standards, auch wenn die ziemlich
niedrig sind. Der Major nennt dieses exe ''MAKEPLAIN.CMD'' (er ist ein
HPFS Typ, ihr komischen FAT Typen werdet es also in etwas mit 8 Buchstaben oder
weniger umbenennen m&uuml;ssen).<br>
<br>
 
Was diese Programmschleife macht ist, eine vorhandene config.p zu l&ouml;schen, jede
Zeile der config.sys einzulesen, die Zeile komplett in Kleinbuchstaben umzuwandeln
(Major Weenie ist kein sehr anspruchsvoller Tipper) und untersucht dann die Zeile, um zu sehen,
ob sie mit den Buchstaben '''protshell''' &uuml;bereinstimmt. Wenn nicht,
dann wird die Zeile einfach wieder zur&uuml;ckgeschrieben. Wenn die Zeile in der
config.sys aber die protshell Zeile ist, wird 'PROTSHELL=C:\OS2\CMD.EXE' f&uuml;r
die existierende protshell Zeile eingesetzt.<br>
<br>
 
Das perfekte Geschenkt f&uuml;r den gelangweilten Hacker. Vielleicht wird Major Weenie
euch n&auml;chstes Mal mit etwas weniger esoterischem begl&uuml;cken. Wenn sie jedoch ein
OS/2 Mailboxsystem laufen lassen sollten, ist das der Weg, es ohne die Workplace
Shell zu benutzen - spart Unkosten und macht das System uninteressant f&uuml;r den
Uneingeweihten.<br>
<br>
 
Nun, hier ist der Scherz, den Major Weenie ihnen versprochen hat.<br>
<br>
 
Erst mal kann das PMREXX Interface nicht direkt in einem REXX exe aufgerufen
werden, was gibt es also f&uuml;r einen besseren Platz, als die STARTUP.CMD, wo ihr
baldiger Ex-Freund es jedesmal sehen wird, wenn er sein System bootet?<br>
<br>
 
Also....f&uuml;gen sie folgende Zeile in die STARTUP.CMD ein (oder erstellen sie eine
STARTUP.CMD, wenn sie noch keine haben):<br>
<br> '''@start pmrexx chump.cmd'''<br>
<br>
 
Benutzen sie dann den Editor, um CHUMP.CMD zu erstellen, das folgendes enth&auml;lt:<br>
<br> '''/* ein lustiges exe, vielleicht...*/<br> <br>
call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'<br> <br>
if RxMessageBox('Dr&uuml;cken sie Cancel um L&ouml;schung der Harddisk abzubrechen.',,<br>
'Fatal System Error Message','cancel','WARNING') = 2 then nop<br> <br>
if RxMessageBox('Harddisk wird gel&ouml;scht... ',,<br>
'Erase Offending Disk','cancel','HAND') = 2 then nop<br> <br>
call SysSleep 3<br>
if RxMessageBox('Chump...','Chump Notification','Ok','Exclamation') = 7<br>
then Exit<br>
<br>
'''


Zwei Kommas am Ende einer Codezeile sind &uuml;brigens Zeichen, die die Zeile weiterf&uuml;hren,
In meinem Fall habe ich den Buchstaben '''P''' als Kürzel für ''plain'' gewählt, um meine Workplace Shell-lose Konfiguration zu kennzeichnen. Ich, als Major Weenie, wechsele meine config.sys öfters und da ich zu faul bin, um die ''config.p'' jedesmal von Hand zu ändern, schrieb ich dieses einfache exe, das sie gerne von mir klauen können.
wenn Codezeilen zu lang sind, um sie noch komfortabel zu lesen oder zu editieren.
<pre>
Sie k&ouml;nnen sie dann mit einem Komma aufteilen und sie werden als eine Codezeile
/* Kreiert eine 'plain' config.sys */        /* <-- das ist der führende Kommentar */
behandelt.<br>
'@c:'                          /* <-- Betriebssystem Funktionen werden
<br>
                                    in einzelne Hochkommas eingeschlossen */
'@cd\os2\boot'
'@if exist config.p del config.p'
dat = 'PROTSHELL=C:\OS2\CMD.EXE'  /* einfache Deklarationen */
Prot = 'protshell'
Tablein = 'PROTSHELL'
Tableout = 'protshell'
File = 'C:\CONFIG.SYS'
Out = 'CONFIG.P'
RC = Linein(File,,0)    /* <-- öffnet ein File für Einträge; es gibt andere Wege */
RC = Lineout(Out,,1)    /* <-- öffnet ein File für Ausgabe; dito */
Do While Lines(File) > 0
        RC = Linein(File)
        Temp = RC
        Test = Left(Temp, 9)
        Test = Translate(Test, Tableout, Tablein)
                /* übersetzt alle Eingaben in Kleinschrift bevor
                  sie verglichen werden,um herauszufinden, ob es die PROTSHELL
                  Zeile ist, nach der ich suche...      */
        If Test = Prot Then
                Do
                        RC = Lineout(Out, Dat)
                        Iterate
                End /* Do */
        RC = Lineout(Out, Temp)
End /* Do */
RC = Lineout(Out)
RC = Stream(File, 'C', 'Close')
Exit 0
</pre>
Nun, das EXIT Kommando ist nicht unbedingt nötig, weil das Programm sich einfach so beenden wird. Aber Major Weenie hat einige Standards, auch wenn die ziemlich niedrig sind. Der Major nennt dieses exe ''MAKEPLAIN.CMD'' (er ist ein HPFS Typ, ihr komischen FAT Typen werdet es also in etwas mit 8 Buchstaben oder weniger umbenennen müssen).


Wissen sie, vielleicht sollten sie einen Testlauf von CHUMP.CMD bei sich selbst
Was diese Programmschleife macht ist, eine vorhandene config.p zu löschen, jede Zeile der config.sys einzulesen, die Zeile komplett in Kleinbuchstaben umzuwandeln (Major Weenie ist kein sehr anspruchsvoller Tipper) und untersucht dann die Zeile, um zu sehen, ob sie mit den Buchstaben '''protshell''' übereinstimmt. Wenn nicht, dann wird die Zeile einfach wieder zurückgeschrieben. Wenn die Zeile in der config.sys aber die protshell Zeile ist, wird 'PROTSHELL=C:\OS2\CMD.EXE' für die existierende protshell Zeile eingesetzt.
durchf&uuml;hren, bevor sie es bei jemand anderem benutzen.<br>
 
<br>
Das perfekte Geschenkt für den gelangweilten Hacker. Vielleicht wird Major Weenie euch nächstes Mal mit etwas weniger esoterischem beglücken. Wenn sie jedoch ein OS/2 Mailboxsystem laufen lassen sollten, ist das der Weg, es ohne die Workplace Shell zu benutzen - spart Unkosten und macht das System uninteressant für den Uneingeweihten.
 
 
Huch, mein Kommunikator ist angegangen. Der Captain versucht wahrscheinlich, mich dazu zu bringen, zu einem weiteren multikulturellen Treffen zu gehen. Ich w&uuml;rde ja, aber
Nun, hier ist der Scherz, den Major Weenie ihnen versprochen hat.
wer versteht schon ihre Tagesordnung? Bis zum n&auml;chsten Mal, verbleibe ich,
 
 
Erst mal kann das PMREXX Interface nicht direkt in einem REXX exe aufgerufen werden, was gibt es also für einen besseren Platz, als die STARTUP.CMD, wo ihr baldiger Ex-Freund es jedesmal sehen wird, wenn er sein System bootet?
[[Major Weenie]]
 
Also... fügen sie folgende Zeile in die STARTUP.CMD ein (oder erstellen sie eine STARTUP.CMD, wenn sie noch keine haben):
@start pmrexx chump.cmd
Benutzen sie dann den Editor, um CHUMP.CMD zu erstellen, das folgendes enthält:
<pre>
/* ein lustiges exe, vielleicht...*/
call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'
if RxMessageBox('Drücken sie Cancel um Löschung der Harddisk abzubrechen.',,
'Fatal System Error Message','cancel','WARNING') = 2 then nop
if RxMessageBox('Harddisk wird gelöscht... ',,
'Erase Offending Disk','cancel','HAND') = 2 then nop
call SysSleep 3
if RxMessageBox('Chump...','Chump Notification','Ok','Exclamation') = 7
then Exit
</pre>
Zwei Kommas am Ende einer Codezeile sind übrigens Zeichen, die die Zeile weiterführen, wenn Codezeilen zu lang sind, um sie noch komfortabel zu lesen oder zu editieren. Sie können sie dann mit einem Komma aufteilen und sie werden als eine Codezeile behandelt.
 
Wissen sie, vielleicht sollten sie einen Testlauf von CHUMP.CMD bei sich selbst durchführen, bevor sie es bei jemand anderem benutzen.
 
Huch, mein Kommunikator ist angegangen. Der Captain versucht wahrscheinlich, mich dazu zu bringen, zu einem weiteren multikulturellen Treffen zu gehen. Ich würde ja, aber wer versteht schon ihre Tagesordnung? Bis zum nächsten Mal, verbleibe ich,
 
Major Weenie
----
----
[[Image:wollogos.gif|right|Warp Online]]
[[Image:wollogos.gif|right]]
 
[[Category:WarpOnline deutsch]]
[[Category:WarpOnline]]

Latest revision as of 05:14, 8 August 2023

Engage Major Weenies Maschinenraum

Ein Haufen Leute haben Major Weenie gefragt: "Wenn Warp so toll ist, warum bringt es dann keine eingebaute Programmiersprache mit?"

Offensichtlich haben sich diese Leute nicht die Mühe gemacht, den Kern von Warp zu überprüfen, sonst hätten sie eine der besten Batch-, Skript- und Allround Programmiersprachen entdeckt, die jemals mit jeder Kopie von Warp durch die große Barriere gekommen ist: REXX.

REXX, eine IBM FLA (Four Letter Acronym : Vier Buchstaben Acronym) Sprache, bedeutet REstructured eXtended eXecutor (neu aufgebauter, erweiterter Ausführer). REXX wurde im Frühling 1979 von einem IBMer namens Mike Cowlishaw im U.K. zusammengebaut. Um ganz offen aus dem Vorwort zu The REXX Handbook (von Gabriel Goldberg und Philip H. Smith III, McGraw-Hill,1992) zu stehlen: "REXX ist so gut, weil so viel davon offensichtlich ist;" (deswegen gefällt es Major Weenie auch so gut) "es ist elegant und geradeheraus zu benutzen und leicht zu lernen." REXX begann sein Leben auf IBMs VM Systemen, fand seinen Weg zu VMS, dann OS/2 1.x, dann irgendwann auf AIX (IBMs UNIX), dann zum OS/400 Betriebssystem, das man auf AS/400 midrange Systemen finden konnte, und zuletzt auf dem IBM PC DOS 7. Es wurde auch dem American National Standards Institut vorgelegt, um es als Computer Batch Sprachstandard annehmen zu lassen.

Wenn sie sich an einem Punkt entscheiden sollten, sich wirklich tief mit REXX zu beschäftigen, sollten sie sich mit IBM in Verbindung setzen und eine Kopie eines ihrer Redbooks beschaffen, genannt OS/2 REXX: From Bark to Byte, das, mal abgesehen von vielen guten Programmbeispielen, exzellente Tips darüber enthält, wie man REXX Code so plattformunspezifisch programmiert, wie möglich (in anderen Worten, wie man ein REXX Programm schreibt, das in allen Plätzen, an denen man REXX finden kann, mit so wenigen Änderungen, wie möglich läuft).

Es bleibt unausweichlich, daß jemand Major Weenie vor seinem Abgang fragt:

"Ok, wenn REXX so toll ist, was kann man damit anstellen ?". Im Fall von Warp wäre eher die Frage angebracht, was man damit NICHT anstellen kann.

Nun, zum einen kann man damit wirklich keine Workplace Shell Anwendungen schreiben, obwohl es eine rudimentäre Popup Dialogbox enthält, die man aus einem REXX exe aufrufen kann. Am Ende der Kolumne wird Major Weenie ihnen einen netten Scherz mit dieser Dialogbox anvertrauen, mit dem er vor Jahren die Frischlinge von der Akademie gefoppt hat.

Selbst ohne ein WPS Interface bleiben unzählige Dinge, die man mit REXX anstellen kann, aber räumen wir erst mal ein wenig Geschwafel über Programmkonventionen aus dem Weg. Wie sie in der Online REXX Anleitung feststellen werden, müssen ALLE REXX Programme mit einem Kommentar anfangen. In einem REXX Programm ist alles zwischen einem slash asterisk (/*) und einem asterisk slash (*/) ein Kommentar. Kommentare können in Kommentare eingebettet (nested) werden. In Warp ist ein REXX Programm ein einfaches Textfile mit einer .CMD Erweiterung.

An diesem Punkt spritzt sich einer der Schlaffis an den Replikatoren normalerweise mit Traubensaft voll und will wissen, ob die STARTUP.CMD im Wurzelverzeichnis ihres Warp Systems auch eine REXX exe ist. Wahrscheinlich nicht, aber es könnte sein. Sie haben gute Chancen, daß, wenn sie eine STARTUP.CMD haben, das ganze nur ein einfaches, altes Batch-File ist. Sie können es leicht feststellen, indem sie es mit einem Editor öffnen und nach dem bezeichnenden Anfangskommentar suchen.

Wenn sie sich dazu entscheiden, tief in die REXX Programmierung in Warp einzusteigen (oder sonstwo, wenn man es genau nimmt), kann ein guter Editor einen großen Unterschied ausmachen. IBM hat die REXX Programmierer nicht vergessen: Schauen sie sich mal den Enhanced Editor (EPM) im Produktivitätsordner an. Wenn sie das gerade editierte File als CMD File identifizieren, wird EPM einige rudimentäre Syntax Komplettierungen für sie ausführen.

Einer der besten Wege, um mit REXX anzufangen, ist die Nutzung des REXXTRY Kommandos, das in Warp eingebaut wurde, zusammen mit der Online REXX Information. Geben sie an einer OS/2 Kommandozeile rexxtry ein, so werden sie folgendes sehen:

 REXXTRY.CMD lets you interactively try REXX statements.
 Each string is executed when you hit Enter.
 Enter 'call tell' for a description of the features.
 Go on - try a few...             Enter 'exit' to end.

Wenn sie call tell wie vorgegeben eingeben, werden sie folgendes sehen:

 /* SAA-portable REXXTRY procedure     11/08/91  version 1.05
  Owned by IBM SAA REXX Development, Endicott, New York.
    Loosely derived from an ancient formulation of Mike Cowlishaw.
  This procedure lets you interactively try REXX statements.
    If you run it with no parameter, or with a question mark
    as a parameter, it will briefly describe itself.
  You may also enter a REXX statement directly on the command line
    for immediate execution and exit.  Example:  rexxtry call show
  Enter 'call show' to see user variables provided by REXXTRY.
  Enter '=' to repeat your previous statement.
  Enter '?' to invoke system-provided online help for REXX.
  The subroutine named 'sub' can be CALLed or invoked as 'sub()'.
  REXXTRY can be run recursively with CALL.
  Except for the signal instructions after a syntax error, this
    procedure is an example of structured programming.
  The 'clear' routine illustrates system-specific SAA-portable coding.
 */
  rc = 0 ......................................... REXXTRY.CMD on OS/2

Kapiert?

Wenn sie lieber von der Workplace Shell aus arbeiten, daran hat IBM auch gedacht. Es gibt eine GUI REXX Funktionsbibliothek, PMREXX (sie muß die Dialogboxfunktion benutzen). Wenn sie 'pmrexx rexxtry' in einer Kommandozeile eingeben, können sie genau dieselben Dinge anstellen, nur in einem GUI Fenster. Außerdem bekommen sie so die Möglichkeit, die Ausgaben in ein File abzuspeichern, sollten sie also an etwas problematischem arbeiten, können sie das PMREXX Interface benutzen, um das tracing anzuschalten und die Ausgaben so in ein File abzuspeichern, in dem sie dann die Routine 'glätten' können.

An diesem Punkt könnte Major Weenie in etwas Pipifax-ähnlichen Kram eintauchen, aber er erwartet von ihnen, daß sie das schon an der Akademie gelernt haben, oder, wenn nicht, dann durch REXXTRY die Grundzüge herausgefunden haben.

Nun, bevor wir zu dem Scherz kommen, wie wäre es mit etwas nützlichem?

Ein echter Warp Anhänger weiß über die Nutzung der Alt-F1 Tastenkombination beim Booten Bescheid, um in den Auswahlbildschirm zu kommen. Die meisten Anwender wissen aber nicht, daß es einen Weg gibt, diesen Bildschirm so anzupassen, daß man etwas anderes als die vorgespeicherten Backups laden kann. (Schauen sie im Hauptindex nach config.sys, folgen sie dann den Anweisungen unter Verwenden von Wiederherstellungsoptionen beim Neustart, um etwas über die Anpassung des Bildschirms zu lernen.)

Eines der nützlichen Dinge, die ich gelernt habe, ist, daß man OS/2 mit einer regulären config.sys booten kann, ohne die Workplace Shell zu laden. Das ist einfach zu schaffen und noch einfacher, wenn man es mit REXX automatisiert.

Um in eine Kommandozeile zu booten, ersetzen sie einfach

PROTSHELL=C:\OS2\CMD.EXE

mit der Zeile

PROTSHELL=C:\OS2\PMSHELL.EXE

in ihrer config.sys. (Bedenken sie, daß sie den Laufwerksbuchstaben anpassen müssen, wenn sie OS/2 auf einer anderen Partition als C: installiert haben.)

Teil dieses alternativen Boots ist es, dieser alternativen config.sys einen spezifischen Namen zu geben und sie im \OS2\BOOT Verzeichnis zu plazieren und gleichzeitig das File ALTF1BOT.SCR zu updaten, damit es auf diese neue config.sys zeigt. Alle veränderten config.sys Files enden mit einem einzelnen Buchstaben, der auf den Buchstaben verweist, der als Auswahl im Alt-F1 Bildschirm auftaucht.

Achtung: Löschen sie nie das File namens CONFIG.X im OS2\BOOT Unterverzeichnis! Das ist das File, das geladen wird, wenn sie zu einer Kommandozeile booten im Alt-F1 Bildschirm anwählen.

Config.x ist schön und gut als Kommandozeilen Boot Auswahl, aber wenn sie auf wahrscheinlich gar nichts einen Zugriff haben, ist config.x das allererste config.sys File auf ihrem System.

In meinem Fall habe ich den Buchstaben P als Kürzel für plain gewählt, um meine Workplace Shell-lose Konfiguration zu kennzeichnen. Ich, als Major Weenie, wechsele meine config.sys öfters und da ich zu faul bin, um die config.p jedesmal von Hand zu ändern, schrieb ich dieses einfache exe, das sie gerne von mir klauen können.

 /* Kreiert eine 'plain' config.sys */        /* <-- das ist der führende Kommentar */
 '@c:'                           /* <-- Betriebssystem Funktionen werden
                                    in einzelne Hochkommas eingeschlossen */
'@cd\os2\boot'
'@if exist config.p del config.p'
 dat = 'PROTSHELL=C:\OS2\CMD.EXE'  /* einfache Deklarationen */
 Prot = 'protshell'
 Tablein = 'PROTSHELL'
 Tableout = 'protshell'
 File = 'C:\CONFIG.SYS'
 Out = 'CONFIG.P'
 RC = Linein(File,,0)    /* <-- öffnet ein File für Einträge; es gibt andere Wege */
 RC = Lineout(Out,,1)    /* <-- öffnet ein File für Ausgabe; dito */
 Do While Lines(File) > 0
        RC = Linein(File)
        Temp = RC
        Test = Left(Temp, 9)
        Test = Translate(Test, Tableout, Tablein)
                /* übersetzt alle Eingaben in Kleinschrift bevor
                   sie verglichen werden,um herauszufinden, ob es die PROTSHELL
                   Zeile ist, nach der ich suche...      */
         If Test = Prot Then
                Do
                        RC = Lineout(Out, Dat)
                        Iterate
                End /* Do */
        RC = Lineout(Out, Temp)
 End /* Do */
 RC = Lineout(Out)
 RC = Stream(File, 'C', 'Close')
 Exit 0

Nun, das EXIT Kommando ist nicht unbedingt nötig, weil das Programm sich einfach so beenden wird. Aber Major Weenie hat einige Standards, auch wenn die ziemlich niedrig sind. Der Major nennt dieses exe MAKEPLAIN.CMD (er ist ein HPFS Typ, ihr komischen FAT Typen werdet es also in etwas mit 8 Buchstaben oder weniger umbenennen müssen).

Was diese Programmschleife macht ist, eine vorhandene config.p zu löschen, jede Zeile der config.sys einzulesen, die Zeile komplett in Kleinbuchstaben umzuwandeln (Major Weenie ist kein sehr anspruchsvoller Tipper) und untersucht dann die Zeile, um zu sehen, ob sie mit den Buchstaben protshell übereinstimmt. Wenn nicht, dann wird die Zeile einfach wieder zurückgeschrieben. Wenn die Zeile in der config.sys aber die protshell Zeile ist, wird 'PROTSHELL=C:\OS2\CMD.EXE' für die existierende protshell Zeile eingesetzt.

Das perfekte Geschenkt für den gelangweilten Hacker. Vielleicht wird Major Weenie euch nächstes Mal mit etwas weniger esoterischem beglücken. Wenn sie jedoch ein OS/2 Mailboxsystem laufen lassen sollten, ist das der Weg, es ohne die Workplace Shell zu benutzen - spart Unkosten und macht das System uninteressant für den Uneingeweihten.

Nun, hier ist der Scherz, den Major Weenie ihnen versprochen hat.

Erst mal kann das PMREXX Interface nicht direkt in einem REXX exe aufgerufen werden, was gibt es also für einen besseren Platz, als die STARTUP.CMD, wo ihr baldiger Ex-Freund es jedesmal sehen wird, wenn er sein System bootet?

Also... fügen sie folgende Zeile in die STARTUP.CMD ein (oder erstellen sie eine STARTUP.CMD, wenn sie noch keine haben):

@start pmrexx chump.cmd

Benutzen sie dann den Editor, um CHUMP.CMD zu erstellen, das folgendes enthält:

 /* ein lustiges exe, vielleicht...*/
 call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'
 if RxMessageBox('Drücken sie Cancel um Löschung der Harddisk abzubrechen.',,
 'Fatal System Error Message','cancel','WARNING') = 2 then nop
 if RxMessageBox('Harddisk wird gelöscht... ',,
 'Erase Offending Disk','cancel','HAND') = 2 then nop
 call SysSleep 3
 if RxMessageBox('Chump...','Chump Notification','Ok','Exclamation') = 7
 then Exit

Zwei Kommas am Ende einer Codezeile sind übrigens Zeichen, die die Zeile weiterführen, wenn Codezeilen zu lang sind, um sie noch komfortabel zu lesen oder zu editieren. Sie können sie dann mit einem Komma aufteilen und sie werden als eine Codezeile behandelt.

Wissen sie, vielleicht sollten sie einen Testlauf von CHUMP.CMD bei sich selbst durchführen, bevor sie es bei jemand anderem benutzen.

Huch, mein Kommunikator ist angegangen. Der Captain versucht wahrscheinlich, mich dazu zu bringen, zu einem weiteren multikulturellen Treffen zu gehen. Ich würde ja, aber wer versteht schon ihre Tagesordnung? Bis zum nächsten Mal, verbleibe ich,

Major Weenie