Anmelden

View Full Version : Ermitteln ob Drucker im System vorhanden



JonnyRico
21-10-04, 16:28
Hi,

wie kann ich in einem Programm. Egal RPG oder CL ermittlen ob ein Drucker im System verfügbar ist. Gibt es eine Systemtabelle? Eine API? Oder RTVOBJD???
Hab mich schon an QGYRPRTA versucht aber entweder ich hab was falsch gemacht oder die ist dazu nicht wirklich gut zu gebrauchen. Kann mir jemand einen Tip geben?

Gruß Sascha

Fuerchau
21-10-04, 16:31
Versuch mal RTVCFGSTS !
Allerdings geht das nur mit DEVD-Druckern und nicht mit Remote-OUTQ's.

JonnyRico
21-10-04, 16:33
Okay danke für die schnelle Antwort. Wie mache ich es dann aber in RPG?

BenderD
21-10-04, 17:41
Hallo Sascha,

system sollte 0 zurück liefern, falls es klappt. Beispiele zur Verwendung von system gibt es auf meiner OpenSource Page en masse.

Dieter Bender


Okay danke für die schnelle Antwort. Wie mache ich es dann aber in RPG?

jajonowak
22-10-04, 06:58
hallo sascha,
ist zwar schon etwas älter aber sollte noch funktionieren

***************** Datenanfang ******************************************
/************************************************** *******************/
/* */
/* Program: $PRFTAP */
/* */
/* Purpose: Determine if a given printer exists. */
/* */
/* Parms: &DEV IN 10A Name of printer */
/* &rtncde OUT 1A Y=Yes, N=No, ?=Error */
/* */
/************************************************** *******************/
PGM ( +
&DEV /* DEVICE name */ +
&rtncde /* Return code */ +
)

DCL &apierrcde *CHAR 8
DCL &DEV *CHAR 10
DCL &rcvvar *CHAR 64
DCL &rtncde *CHAR 1

DCL &#error *CHAR 1 '?'
DCL &#no *CHAR 1 'N'
DCL &#yes *CHAR 1 'Y'

MONMSG cpf0000 EXEC( GOTO error )

CHGVAR &rtncde &#yes

CHGVAR &apierrcde X'00000008'

CALL qdcrdevd ( +
&rcvvar /* Dummy receiving variable */ +
X'00000040' /* Length = 64 */ +
'DEVD0100' /* Use simplest data format */ +
&DEV /* DEVICE name */ +
&apierrcde /* API error code */ +
)

/* --------------------------------------------------------------- +
* Not a TAPE if QDCRDEVD ends in error, or +

* if the device category is not *TAPF. +
*/
IF ( %BIN( &apierrcde 5 4 ) > 0 ) DO
CHGVAR &rtncde &#no
ENDDO

IF ( %SST( &rcvvar 32 10 ) *NE '*PRT' ) DO
CHGVAR &rtncde &#no
ENDDO

RETURN

error:
CHGVAR &rtncde &#error

ENDPGM
******************Datenende *******************************************


LG
Hans-Joachim

JonnyRico
22-10-04, 07:33
Hey danke. Super Tip. Klappt bestens.

Fuerchau
22-10-04, 09:28
Wie immer gibts mehrere Methoden.
RTVOBJD liefert halt diverse Beschreibungen (auch den Objekttyp).
RTVCFGSTS prüft neben der Existenz halt auch, in welchen Status (abgehängt, angehängt, Nachricht, online,...) das Gerät ist.