/* $VER: FileTypeInfo 1.4 (19 04 98) by Ralf Heinert */ /* Frodo@W-Specht.Rhein-Ruhr.de | Frodo@Focus.Ruhr.de */ /* Designed for DirOpus 5.5 */ /* Zeigt den File-Typ eines selektierten Listereintrages */ /* unter Benutzung der Einträge in den DirOpus-Filetypes an. */ /* Die Informationsqualität diese Scriptes hängt davon ab, */ /* wie viele FileTypes installiert sind, ob sie funktionieren, */ /* und wie gut sortiert und gepflegt die Liste ist. */ /* Im zweiten Fenster können die Dateitypen weiter bearbeitet werden. */ /* Hier wird auch die Whatis-, datatypes- u.FileID.library */ /* zu Rate gezogen. */ /* Speichern als DOpus5:ARexx/FileTypeInfo.dopus5 */ /* Einbinden, z.B.im Lister-Popup-Menü, mittels */ /* -----------------------------------------------*/ /* ARexx FileTypeInfo.dopus5 {Qp} */ /* Abhaken: Asynchron, keine Anführungszeichen */ /* -----------------------------------------------*/ /* Voreinstellungen für Pfade und Variablen (Nach Wunsch ändern) : */ TritonPrefs_Pfad = "SYS:Prefs/Triton" /* Pfad für den Triton-Voreinsteller */ IFFMaster = "SYS:System/IFFMaster/IFFMaster" /* Wo ist Ihr IFFMaster ? */ /* -------- Ab hier nichts mehr ändern ! --------- */ NL = '0a'x /* Zeilenvorschubzeichen definieren */ FTypes_Pfad = "DOpus5:filetypes/" /* Hier sollten die Filetypes sein */ FTypes_Store = "Dopus5:storage/filetypes/" /* und hier die ausgelagerten */ GefundenesPrefsFile = "" Gesucht = 0 options results options FAILAT 99 SIGNAL ON break_c /* Im Falle einer Unterbrechung */ SIGNAL ON failure /* oder eines Fehlers im Script */ SIGNAL ON halt /* an dessen Ende springen, */ SIGNAL ON ioerr /* um eine entsprechende */ SIGNAL ON syntax /* Fehlermeldung auszugeben */ PARSE ARG DOpusPort /* DOpus-Port abholen */ Address value DOpusPort /* Auf den Opus-Port wechseln */ IF ~SHOW('LIBRARIES','tritonrexx.library') THEN /* Library nicht schon im Speicher ? */ /* Ansonsten */ CALL ADDLIB('tritonrexx.library',10,-30,0) /* Library anmelden */ IF ~SHOW('LIBRARIES','rexxtricks.library') THEN CALL ADDLIB('rexxtricks.library',9,-30,38) apptags = 'TRCA_Name FileTypeInfo-T', /* Dieser Block bewirkt u.a. */ 'TRCA_LongName "FileTypeInfo.dopus5"', /* daß diese Informationen */ 'TRCA_Info "Ermittelt den Dateityp in DOpus"', /* an den Triton-Voreinsteller */ 'TRCA_Version "1"', /* übergeben werden, */ 'TRCA_Release "4"', /* so daß man dort weiß, */ 'TRCA_Date "19.04.98"', /* für welches Programm man */ 'TAG_END' /* die Einstellungen ändert. */ lister query source stem source_handle. /* Den "handle" des Quell-Listers ermitteln */ /* Der heißt dann: source_handle.0 */ If source_handle.count = 0 then DO dopus request '"Ich brauche einen Quell-Lister !" Na gut' EXIT End lister query source_handle.0 numselentries /* Menge der selektierten Einträge ermitteln */ sel_Menge = RESULT If sel_Menge = 0 Then Do dopus request '"Da muß zumindest EIN Eintrag' || NL ||, 'im Quell-Lister selektiert sein" Grrr' EXIT End lister query source_handle.0 firstsel /* Ersten markierten Eintrag ermitteln */ First_Name = RESULT /* in Anführungszeichen, ohne Pfad. */ File_Name = RESULT /* Das da brauche ich gleich nochmal, */ /* denn First_Name wird gleich umgemodelt */ File_NameOA = Strip(File_Name,"B",'"') /* Vorne und hinten Anführungszeichen weg, */ /* denn TritonRexx hat was dagegen. */ lister query source_handle.0 entry File_Name stem fileinfo /* Auswertung siehe unten */ type = fileinfo.type IF type = 1 THEN Dingsbums = " Verzeichnis" ELSE Dingsbums = " File" lister query source_handle.0 path /* ermittelt Pfad (ohne Anführungszeichen) */ Pfad = RESULT First_Name = Pfad||Strip(First_Name,"B",'"') /* Pfad u.Name verknüpfen, dabei vom */ /* Dateinamen die " entfernen */ First_NameOA = First_Name /* Ohne Anführungszeichen merken */ First_Name = D2C(34)||First_Name||D2C(34) /* Vorne und Hinten Anführungszeichen, */ /* für Dateinamen mit Leerzeichen. */ DOpus GetFileType First_Name /* DOpus-Dateityptyp ermitteln */ FT_DOpusFT = RESULT /* als FT_DOpusFT merken */ DOpus GetFileType First_Name ID /* ebenso dessen ID */ FT_DOpusID = RESULT /* als FT_DOpusID merken */ IF FT_DOpusID = FT_DopusFT THEN FT_DOpusID = "" lister set source_handle.0 busy 1 /* Lister sperren (busy) */ /* ----------- TritonRexx-Fensterdefinition (Hauptfenster) ------------ */ windowtags = WindowID(1) WindowPosition('TRWP_CENTERDISPLAY'), /* Zentriertes Fenster */ WindowFlags('TRWF_NOSIZEGADGET'), /* ohne Größengadget */ WindowTitle(" FileTypeInfo.dopus5"), /* mit diesem Titel */ BeginMenu('Projekt'), /* Menütitel 'Projekt' */ MenuItem('T_ Triton Prefs',101), 'ItemBarlabel', /* Ein Strich im Menü */ MenuItem('E_ Ende',103), 'HorizGroupEC Space VertGroupA Space Space', NamedFrameBox('Das selektierte'Dingsbums), /* Oberer Kasten */ 'HorizGroupSAC Space VertGroupSAC Space Space', TextN(Pfad) 'TRAT_Flags TRTX_NOUNDERSCORE SpaceB', TextB(File_NameOA) 'TRAT_Flags TRTX_NOUNDERSCORE SpaceB', 'EndGroup Space EndGroup Space', NamedFrameBox('ist vom Typ'), /* Unterer Kasten */ 'HorizGroupSAC Space VertGroupA Space Space', 'HorizGroupSAC Space', TextB(FT_DOpusFT) 'SpaceB', TextH(' ID: '), TextBox(FT_DOpusID,2,7), 'EndGroup SpaceB', 'EndGroup Space EndGroup SpaceB', 'HorizGroupS', /* Untere Buttons */ ButtonE('Weitere Funktionen',4) 'Space', ButtonR('Aha !',3), 'EndGroup Space', 'EndGroup Space EndGroup EndProject' app = TR_CREATEAPP(apptags) /* Applikaton starten */ IF app ~= '00000000'x THEN DO /* und wenn das geklappt hat, */ window = TR_OPENPROJECT(app,windowtags) /* Fenster öffnen. */ WindowProject = C2D(Window) IF window ~= '00000000'x THEN DO /* Wenn auch das geklappt hat,*/ ende = 0 DO WHILE ~ende /* Solange ende nicht 1 ist */ CALL TR_WAIT(app,'') /* fange Benutzereingaben ab */ DO WHILE TR_HANDLEMSG(app,'event') /* und wenn eine kommt : */ IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN /* z.B.Schließknopf gedrückt, */ ende = 1 /* End-Abschalter auf TRUE */ IF event.trm_id = 3 THEN /* Linker Knopf (3) gedrückt */ ende = 1 IF event.trm_id = 4 THEN DO /* Rechter Knopf (4) gedrückt */ CALL _Zweites_Fenster() /* Zweites Fenster öffnen */ ende = 1 /* Danach alles beenden */ END IF event.trm_id = 101 THEN DO /* Menü: TritonPrefs geklickt */ address command TritonPrefs_Pfad /* Triton_Prefs aufrufen */ END IF event.trm_id = 103 THEN /* Menü: Ende angeklickt */ ende = 1 END END CALL TR_UNLOCKPROJECT(Window) /* Haupt-Fenster freigeben */ CALL TR_CLOSEPROJECT(window) /* Fenster schließen */ END CALL TR_DELETEAPP(app) /* Applikation schließen */ END lister set source_handle.0 busy 0 /* Lister freigeben */ lister select source_handle.0 File_Name 0 /* Erstes Angewähltes deselektieren */ lister refresh source_handle.0 /* Änderungen (Deselektion) sichtbar machen */ EXIT(0) /* Programmende, wenn alles geklappt hat */ /* ------------------ Die Procedure für das zweite Fenster: ------------------ */ _Zweites_Fenster: /* Fortsetzung der Auswertung */ name_Text = 'Dateiname : ' /* Text-Variable initialisieren */ name = fileinfo.name /* Information abfragen & speichern */ size_Text = 'Größe in Bytes : ' size = fileinfo.size prot_Text = 'Schutzbits : ' prot = fileinfo.protstring date_Text = 'Letzte Änderung : ' date = fileinfo.datenum time_Text = 'Uhrzeit : ' time = fileinfo.time comm_Text = 'Dateikommentar : ' comm = fileinfo.comment /* Version der Datei ermitteln */ IF Dingsbums = " File" THEN DO First_NameOA = Strip(First_Name,"B",'"') /* c:Version mag keine Anführungszeichen */ Address Command "RUN >NIL: C:Version PIPE:A" IF Open('VERS','PIPE:A','r') then Versionsstring = readln('VERS') Pfadstring = Right(Versionsstring,Length(First_Name)+1) Pfadstring = Strip(Pfadstring,"T","'") IF ~Find(Versionsstring,Pfadstring) THEN vers = "" ELSE Vers = Right(Versionsstring,Length(Versionsstring) - LastPos(" ",Versionsstring)) END ELSE vers = "" vers_Text = 'Version : ' /* Dateityp nun ermitteln mittels der:*/ FT_Whatis = WHATIS(First_NameOA) /* whatis.library */ FT_FileID = FILEID_IDENTIFY(First_NameOA) /* FileID.library */ IF ~SHOW( 'L', 'datatypes.library' ) THEN CALL ADDLIB( 'datatypes.library', 0, -30 ) CALL ExamineDT( First_NameOA, dtstem., STEM ) GroupID = dtstem.GroupID /* DT GroupID */ BaseType = dtstem.BaseType /* Type */ BaseName = dtstem.BaseName /* Base Name */ FT_DType = GroupID||", "||BaseType||", "||BaseName /* Das zweite Fenster: */ win2tags = WindowID(2) WindowPosition('TRWP_CENTERDISPLAY'), /* Zentriertes Fenster */ WindowFlags('TRWF_NOSIZEGADGET'), /* ohne Größengadget */ WindowTitle(" Informationen : "), /* mit diesem Titel */ Windowunderscore('§'), 'HorizGroupEC Space', 'VertGroupAC SpaceB', TROB_Framebox RTFB_GROUPING TRAT_Text File_Name, 'HorizGroupA Space', 'VertGroupA Space', 'LineArray SpaceB', /* Tabelle */ 'BeginLine', Text3(size_Text) 'TRAT_Flags TROF_RIGHTALIGN', /* Rechtsbündig */ TextN(size), /* an Filegröße */ 'EndLine', 'Space', 'BeginLine', Text3(date_Text) 'TRAT_Flags TROF_RIGHTALIGN', TextN(date), 'EndLine', 'Space', 'BeginLine', Text3(time_Text) 'TRAT_Flags TROF_RIGHTALIGN', TextN(time), 'EndLine', 'Space', 'BeginLine', Text3(vers_Text) 'TRAT_Flags TROF_RIGHTALIGN', TextN(vers), 'EndLine', 'Space', 'BeginLine', Text3(prot_Text) 'TRAT_Flags TROF_RIGHTALIGN', TextN(prot), 'EndLine', 'Space', 'BeginLine', Text3(comm_Text) 'TRAT_Flags TROF_RIGHTALIGN', TextN(comm), 'EndLine', 'EndArray SpaceB', 'EndGroup Space', 'EndGroup Space', NamedFrameBox('Verschiedene Meinungen'), 'HorizGroupA Space', 'VertGroupA Space', 'LineArray Space', 'BeginLine', TextN('Whatis.library : '), TextB(FT_Whatis) 'Space', 'EndLine', 'Space', 'BeginLine', TextN('datatype.library : '), TextB(FT_DType) 'Space', 'EndLine', 'Space', 'BeginLine', TextN('FileID.library : '), TextB(FT_FileID) 'Space', 'EndLine', 'Space', 'BeginLine', TextN('DOpus.Dateityp : '), TextB(FT_DOpusFT) 'Space', 'EndLine', 'EndArray SpaceB', 'EndGroup Space', 'EndGroup SpaceB', 'VertGroupA', 'HorizGroupA Space', Button('Dateitypenmanager',9) 'Space', 'EndGroup Space', 'HorizGroupA Space', Button('IFF Master',12) 'Space', Button('DataTypes Info',13) 'Space', 'EndGroup Space', 'HorizGroupA Space', Button('Editiere Filetyp',10) 'Space', Button('Suche Prefsfile',11) 'Space', 'EndGroup Space', 'HorizGroupA Space', Button('Suche Filetypen',6) 'Space', Button('Lese HEX',5) 'Space', 'EndGroup Space', 'HorizGroupA Space', Button('Erzeuge Filetype',8) 'Space', ButtonR('Fertig!',7) 'Space', 'EndGroup SpaceB', 'EndGroup', 'EndGroup Space', 'EndGroup EndProject' app2 = TR_CREATEAPP(apptags) /* Applikaton starten */ IF app2 ~= '00000000'x THEN DO win2 = TR_OPENPROJECT(app2,win2tags) /* Fenster Nr.2 öffnen. */ WindowProject = C2D(win2) IF win2 ~= '00000000'x THEN DO ende2 = 0 DO WHILE ~ende2 CALL TR_WAIT(app2,'') DO WHILE TR_HANDLEMSG(app2,'event2') IF event2.trm_class = 'TRMS_CLOSEWINDOW' THEN /* Schließknopf gedrückt, */ ende2 = 1 /* End-Abschalter auf TRUE */ IF event2.trm_id = 5 THEN DO /* Wenn */ IF Dingsbums = " File" THEN DO /* es überhaupt ein File ist */ lister set source_handle.0 busy 0 command wait source source_handle.0 None lister select source_handle.0 File_Name 1 lister refresh source_handle.0 command "Hexread" First_Name /* DOpusbefehl HexRead */ lister set source_handle.0 busy 1 END END IF event2.trm_id = 6 THEN DO lister set source_handle.0 busy 0 /* Lister kurz mal aktivieren,*/ command wait source source_handle.0 None /* Alles deselektieren */ lister select source_handle.0 File_Name 1 /* Erstes File wieder anwählen*/ lister refresh source_handle.0 /* Änderungen sichtbar machen */ command wait "FindFileType" /* DOpus Dateitypensucher */ lister select source_handle.0 File_Name 1 /* Dies ist nötig, wenn */ lister refresh source_handle.0 /* "Benutzen" gewählt wurde */ lister set source_handle.0 busy 1 /* Lister wieder busy */ END IF event2.trm_id = 7 THEN /* Abbruch-Knopf */ ende2 = 1 IF event2.trm_id = 8 THEN DO lister set source_handle.0 busy 0 command wait "CreateFileType" /* DOpus Dateitypererzeuger */ lister select source_handle.0 File_Name 1 lister refresh source_handle.0 lister set source_handle.0 busy 1 END IF event2.trm_id = 10 THEN DO IF gesucht = 0 THEN CALL _SuchePrefsFile() IF gefunden = 1 THEN DO lister set source_handle.0 busy 0 command wait "EditFileType" GefundenesPrefsFile lister select source_handle.0 File_Name 1 lister refresh source_handle.0 lister set source_handle.0 busy 1 END END IF event2.trm_id = 11 THEN DO IF gesucht = 0 THEN CALL _SuchePrefsFile() IF gefunden = 1 THEN DO DOpus Request '"'GefundenesPrefsFile'"' "interessant" END END IF event2.trm_id = 9 THEN DO lister set source_handle.0 busy 0 command wait "EditFileType" lister select source_handle.0 File_Name 1 lister refresh source_handle.0 lister set source_handle.0 busy 1 END IF event2.trm_id = 12 THEN DO IF EXISTS(IFFMaster) THEN DO IF FT_WhatIs == "IFF" THEN DO lister set source_handle.0 busy 0 address command IFFMaster' 'File_Name lister select source_handle.0 File_Name 1 lister refresh source_handle.0 lister set source_handle.0 busy 1 END ELSE DO Knopf = TR_EasyRequest(app2,"Das angewählte File", NL||"ist kein IFF-File.", NL||NL||"HexRead würde sonst", NL||"am Fileanfang FORM anzeigen,", NL||"und die Whatis.library", NL||"das File als IFF-File identifizieren.", NL||NL||"Nur bei solchen Files", NL||"funktioniert der IFFMaster.",, "OK","TREZ_Title" '" Info:"' "TREZ_LockProject" WindowProject) END END ELSE DO Knopf = TR_EasyRequest(app2,"Sie brauchen hierzu", NL||"das Programm IFFMaster", NL||"von Kay Drangmeister", NL||NL||"Bitte überprüfen Sie auch,", NL||"ob oben im Script", NL||"der Pfad für den IFFMaster", NL||"richtig eingestellt ist !",, "OK","TREZ_Title" '" Problem:"' "TREZ_LockProject" WindowProject) END END IF event2.trm_id = 13 THEN DO CALL _Drittes_Fenster() DrittesFenster = "offen_gewesen" END END END CALL TR_CLOSEPROJECT(win2) /* Fenster zu */ END CALL TR_DELETEAPP(app2) /* Applikation schließen */ END ADDRESS VALUE DOpusPort /* Sonst versteht das Script */ /* keine Opus-Befehle mehr */ /* und kann nicht mehr mit */ /* DOpus-Listern umgehen. */ RETURN 0 /* Ende des Unterprogrammes. Zurück zum Hauptprogramm ! */ /* --- Nach dem Voreinsteller-File in DOpus5Filetypes suchen --- */ _SuchePrefsFile: erg = GETDIR(FTypes_Pfad,'~(#?.info)','list','FILES') i = 1 Betreff = "" DO UNTIL Betreff = FT_DOpusFT IF OPEN('Prefsfile',FTypes_Pfad||list.i,'R') THEN DO Zeile = ReadCh('Prefsfile',60) Test = SUBSTR(Zeile,9,8) IF Test = "OPUSTYPE" THEN DO Betreff = SUBSTR(Zeile,21,32) oo = Pos('00'x,Betreff) Betreff = Left(Betreff,oo-1) END END CALL CLOSE('Prefsfile') i = i + 1 IF i = List.0 + 1 THEN DO gefunden = 0 LEAVE END END gesucht = 1 IF ~(gefunden = 0) THEN gefunden = 1 ELSE DOpus Request '"Dafür finde ich kein Prefs-File" na gut' i = i - 1 GefundenesPrefsFile = FTypes_Pfad||list.i RETURN 0 /* ------------- Die DataTypes.library befragen ------------- */ _Drittes_Fenster: IF DrittesFenster ~= "offen_gewesen" THEN DO DiskKey = dtstem.DiskKey /* Disk Key */ DirEntryType = dtstem.DirEntryType /* Dir Entry Type */ FileName = dtstem.FileName /* File Name */ Protection = dtstem.Protection /* Protection */ OtherProtection = dtstem.OtherProtection /* Other Protection */ GroupProtection = dtstem.GroupProtection /* Group Protection */ EntryType = dtstem.EntryType /* Entry Type */ NumBlocks = dtstem.NumBlocks /* Blocks */ OwnerUID = dtstem.OwnerUID /* Owner User ID */ OwnerGID = dtstem.OwnerGID /* Owner Group ID */ OwnerUIDName = dtstem.OwnerUIDName /* Owner User Name */ OwnerGIDName = dtstem.OwnerGIDName /* Owner Group Name */ DataType = dtstem.DataType /* File Type */ END win3tags = WindowID(3) WindowPosition('TRWP_CENTERDISPLAY'), WindowFlags('TRWF_NOSIZEGADGET'), WindowTitle(" datatypes.library "), Windowunderscore('§'), 'HorizGroupSA Space', 'VertGroupAC SpaceB', TROB_Framebox RTFB_GROUPING TRAT_Text File_Name, 'HorizGroupA Space', 'VertGroupA Space', 'LineArray SpaceB', 'BeginLine', Text3('Disk Key : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(DiskKey), 'EndLine', 'Space', 'BeginLine', Text3('Blocks : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(NumBlocks), 'EndLine', 'Space', 'BeginLine', Text3('Protection : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(Protection), 'EndLine', 'Space', 'BeginLine', Text3('Other Protection : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(OtherProtection), 'EndLine', 'Space', 'BeginLine', Text3('Group Protection : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(GroupProtection), 'EndLine', 'Space', 'BeginLine', Text3('Owner User ID : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(OwnerUID), 'EndLine', 'Space', 'BeginLine', Text3('Owner Group ID : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(OwnerGID), 'EndLine', 'Space', 'BeginLine', Text3('Owner User Name : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(OwnerUIDName), 'EndLine', 'Space', 'BeginLine', Text3('Owner Group Name : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(OwnerGIDName), 'EndLine', 'Space', 'BeginLine', Text3('DirEntry Type : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(DirEntryType), 'EndLine', 'Space', 'BeginLine', Text3('Entry Type : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(EntryType), 'EndLine', 'SpaceB SpaceB', 'BeginLine', Text3('Group ID : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(GroupID), 'EndLine', 'Space', 'BeginLine', Text3('Base Type : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(BaseType), 'EndLine', 'Space', 'BeginLine', Text3('Base Name : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(BaseName), 'EndLine', 'Space', 'BeginLine', Text3('Data Type : ') 'TRAT_Flags TROF_RIGHTALIGN', TextN(DataType), 'EndLine', 'EndArray SpaceB', 'EndGroup Space', 'EndGroup Space', 'VertGroupA', 'HorizGroupA Space', ButtonR('Zurück !',15) 'Space', 'EndGroup Space', 'EndGroup', 'EndGroup Space', 'EndGroup EndProject' app3 = TR_CREATEAPP(apptags) IF app3 ~= '00000000'x THEN DO win3 = TR_OPENPROJECT(app3,win3tags) WindowProject = C2D(win3) IF win3 ~= '00000000'x THEN DO ende3 = 0 DO WHILE ~ende3 CALL TR_WAIT(app3,'') DO WHILE TR_HANDLEMSG(app3,'event3') IF event3.trm_class = 'TRMS_CLOSEWINDOW' THEN ende3 = 1 IF event3.trm_id = 15 THEN ende3 = 1 END END CALL TR_CLOSEPROJECT(win3) END CALL TR_DELETEAPP(app3) END RETURN 0 /* ------------ Routine zur Textausgabe mittels RequestChoice -------------- */ _Requester: IF EXISTS('c:RequestChoice') THEN DO Dosbefehl = "C:RequestChoice >NIL: "||, D2C(32)||D2C(34)||, " Problem:", D2C(34)||D2C(32)||D2C(34)||, Fehlertext||, D2C(34)||D2C(32)||D2C(34)||, Gadgettext||D2C(34) ADDRESS COMMAND Dosbefehl END ELSE DO /* Wer RequestChoice nicht hat, bekommt eben eine Shell */ IF OPEN('Shell','CON:160/50/500/100/ Problem/CLOSE/WAIT') THEN DO WriteLn('Shell',Fehlertext) CALL CLOSE('Shell') END END RETURN 0 /* Fertig! Und wieder zurück, von wo Du hergekommen bist ! */ /* ----------------- Im Falle eines Script-Fehlers hier hin springen ---------------- */ break_c: failure: halt: ioerr: syntax: Fehlerinfo = '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc) Fehlerzeile = SOURCELINE(sigl) IF OPEN('Shell','CON:160/50/500/100/Script-Fehler/CLOSE/WAIT') THEN DO WriteLn('Shell',Fehlerinfo) /* interne Fehlerausgabe .. */ WriteLn('Shell',Fehlerzeile) /* etwas "haltbarer" machen */ CALL CLOSE('Shell') END lister set source_handle.0 busy 0 /* Lister reanimieren */ CALL TR_DELETEAPP(app) /* Applikation löschen */ CALL TR_DELETEAPP(app2) /* Applikation löschen */ EXIT(10)