Site Index - Feedback - Impressum |
| |||||||||
|
|
( Archiv ) | ( Neues Thema ) |
( Zeige die Threadübersicht ) | ( Zur Startübersicht ) |
22.08.2006 |
Seltsames Rexx-Problem (von: Sebastian Arendt, 10:50:55) | ^ |
Tach in die Runde,
ich habe hier seit einiger Zeit ein recht lästiges Rexx-Problem. Nach längeren Anläufen ist es mir endlich gelungen auf meinem neuen Rechner ACP2 zu installieren, jedoch blieb ein Problem auch nach der _fehlerfreien_ geglückten Installation erhalten: Rexx funtioniert nicht immer und mittlerweile auch mit unterschiedlichen Fehlern. So konnte ich bis eben nicht das Skript "makefolder.cmd" von TAME 1.03 ausführen. Es blieb immer in der 9 Zeile hängen. Die Fehlermeldung: Unbekannte Routine in Zeile 9: =========== Schnipp Zeile 9 =========== CALL SysQueryClassList 'clist.' =========== Schnapp Zeile 9 ========== Das war einmal. Jetzt gerade habe ich das Skript erneut aufgerufen, um die exakte Fehlermeldung zu koieren, und siehe da: Das Skript lief durch. Diesmal hatte es aber bei den Programmobjekten die Pfade nicht gesetzt und versuchte alles auf C:\ zu starten. Dieses verhalten ist absolut neu. Das System ist jungfräulich. D.h. ich habe es mit UPCD installiert. Eingespielt sind FP 5, DDFP3, MPTS FIX WR_8708 sowie TCP/IP FIX UN_2334 Sowie SNAP Version 3.1.5. Das Problem tritt an zwei völlig verschieden Rechnern mit der identischen Installation auf. Somit dürfte es nicht an der Hardware liegen. An Rexx selber habe ich nichts geschraubt. Selbstverständlich steht \OS2\DLL im Libpath und die Datei Rexxutil.dll ist auch wo sie sein sollte. Kann mir jemand sagen, woher das kommt? Leicht verwirrt, Sebastian [ Leser: 98 ] |
Re: Seltsames Rexx-Problem (von: Peter W., 13:41:16) | |
Werden denn zu Beginn des Scriptes die Funktionen aus der "rexxutil.dll" geladen?
Die Fehlermeldung bezieht sich ja auf den Aufruf "SysQueryClassList" und ist eigentlich typisch dafür, dass die Funktionen nicht geladen wurden. Es reicht, die Funktionen ein mal zu laden. Wenn Du also zwischendurch z.B. ein anderes Script gestartet hast, in dem das Laden durchgeführt wurde, dann funktioniert hinterher ggf. auch Dein Script. |
Re: Seltsames Rexx-Problem (von: Sebastian Arendt, 23:36:42) | |
Hallo Peter,
danke für die Antwort. Ich bin kein Rexx-Experte, aber ich schätze mal: Nein, die Funktionen werden vorher nicht geladen. Aber eigentlich wird das Skript im WarpIN Paket bei der Installation aufgerufen. Irgendwo dabei wird wohl die Sache geladen, sonst wäre ich ja nicht der Einzige mit diesem Problem. Und warum läuft es dann durch, hat aber keine Pfade in den Probrammobjekten gesetzt? Gruß Sebastian |
23.08.2006 |
Kopf der Routine (08:25:02) | |
Kannst du mal die ersten 10 Zeilen der Rotine hierher kopieren, damit man
den Aufruf für die Bibliotheken überprüfen kann? |
Re: Kopf der Routine (von: Sebastian Arendt, 09:52:16) | |
/* tame Folder creation routine */
arg workdir prgname = 'Tame/2' prgvers = 'Ver.1.0.3' CreateWPS: /* Check MMFolder class */ CALL SysQueryClassList 'clist.' SELECT WHEN DATATYPE(clist.0) <> 'NUM' THEN ismmf = 0 WHEN clist.0 = 0 THEN ismmf = 0 OTHERWISE DO ismmf = 0 DO i = 1 TO clist.0 IF WORD(clist.i,1) = 'MMFolder' THEN DO ismmf = i LEAVE i END END END END [...] |
Re: Kopf der Routine (13:20:31) | |
Bei mir sieht das Script anders aus und da werden die Funktionen aufgerufen.
/* tame Folder creation routine */ call rxfuncadd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' call SysLoadFuncs arg workdir prgname = 'Tame/2' prgvers = 'Ver.1.0.3' CreateWPS: /* Check MMFolder class */ CALL SysQueryClassList "clist." SELECT WHEN DATATYPE(clist.0) <> 'NUM' THEN ismmf = 0 WHEN clist.0 = 0 THEN ismmf = 0 OTHERWISE DO ismmf = 0 DO i = 1 TO clist.0 IF WORD(clist.i,1) = 'MMFolder' THEN DO ismmf = i LEAVE i END END END END SELECT WHEN ismmf = 0 THEN imgfclass = 'WPFolder' OTHERWISE imgfclass = 'MMFolder' END DROP clist. /* Create WPS objects */ InstallDir = workdir FoldTitle = prgname Icon1 = InstallDir||'\Folder1.ico' Icon2 = InstallDir||'\Folder2.ico' Icon = 'ICONFILE='Icon1||';ICONNFILE=1,'||Icon2 Setup = 'OBJECTID=<TAME_2_FOLDER>;'||Icon||'' dummy = SysCreateObject('WPFolder',FoldTitle,'<WP_DESKTOP>',Setup,'U') FoldTitle = prgname||' Scripts' Setup = 'OBJECTID=<TAME_2_SCRIPTS>;ALWAYSSORT=YES' dummy = SysCreateObject('WPFolder',FoldTitle,'<TAME_2_FOLDER>',Setup,'R') FoldTitle = prgname||' Images' Setup = 'OBJECTID=<TAME_2_IMAGES>;ALWAYSSORT=YES' dummy = SysCreateObject(imgfclass,FoldTitle,'<TAME_2_FOLDER>',Setup,'R') title.1 = prgname setup.1 = 'OBJECTID=<TAME_2_PROG>;EXENAME='InstallDir'\Tame.exe;ICONFILE='InstallDir'\Tame.ico;STARTUPDIR='InstallDir'' title.2 = 'FaxView' setup.2 = 'OBJECTID=<TAME_2_FAXVIEW>;EXENAME='InstallDir'\FaxView.exe;ICONFILE='InstallDir'\FaxView.ico;STARTUPDIR='InstallDir'' title.3 = prgname||'^manual (English)' setup.3 = 'OBJECTID=<TAME_2_HLPENG>;EXENAME=View.exe;PARAMETERS='InstallDir'\English.inf;STARTUPDIR='InstallDir'' title.4 = 'FaxView^manual' setup.4 = 'OBJECTID=<TAME_2_FAXVIEWHLP>;EXENAME=View.exe;PARAMETERS='InstallDir'\FaxView.inf;STARTUPDIR='InstallDir'' title.0 = 4 DO i = 1 TO title.0 dummy = SysCreateObject('WPProgram',title.i,'<TAME_2_FOLDER>',setup.i,'U') END |
Re: Kopf der Routine (von: Klaus-Dieter, 13:23:57) | |
Es ist ja ein neues Tame vom 02.08.2006 draußen, vielleicht solltest du Dir mal das holen... |
Der Aufruf von SysloadFuncs fehlt (15:52:22) | |
Wenn dieser Aufruf fehlt, dann kann man keine Funktionen im Ausführugsteil
der Routine ausführen: das ist der Fehler Unten ist der Aufruf in einer anderen Liste richtig gezeigt. |
Re: Kopf der Routine (21:10:16) | |
Vielen Dank an alle.
Das stimmt alles sehr auffällig. Mit dem neuen Tame klappt's. Warum nur das ältere Skript die Aufrufe nicht hatte, ist mir schleierhaft. Aber naja. Danke & Gruß Sebastian Arendt |
24.08.2006 |
Re: Kopf der Routine (von: Peter W., 08:55:04) | |
Vielleicht noch eine kleine Ergänzung, bzw. Erklärung zu Deiner Frage:
Und warum läuft es dann durch, hat aber keine Pfade in den Probrammobjekten gesetzt? In REXX funktionieren "normale" Funktionen auch ohne die "rexxutil.dll". Alle Funktionen, die mit "Sys" anfangen, erfordern jedoch vorher das oben beschriebene Laden der besagten DLL. Man kann theoretisch auch einzelne Funktionen laden, aber... 1) Weiß ich nicht mehr, wie.. ;-) 2) Braucht man heutzutage ja nicht mehr so sparsam mit dem Speicher umgehen. |
( Zeige die Threadübersicht ) | [ Version zum Drucken ] | ( Zur Startübersicht ) |
|
Mit * markierte Felder müssen ausgefüllt werden ! |
|