OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( 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 )

Datum Thema
09.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !


php.net OpenIT © 1998-2017 by WebTeam OS2.org