Subject: | |
From: | |
Reply To: | |
Date: | Wed, 25 Sep 1996 19:00:14 -0700 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
This is a multi-part message in MIME format.
--------------6A9A6D031B69
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
HELP! Any Slave printing Experts,
I'm up against the wall here, can't put users on the new 969.
I have been using two subroutines "SLAVON" & "SLAVOFF" for many years on
the series 70. They have always worked great.
Now on the series 969 "SLAVOFF" hangs on a read. I think maybe it's
because the 969 in so much faster than the series 70 Don't know for
sure. The original author is unavailable.
In my original post I attached (NOT THE PROGRAM SOURCE) two small files that contain a
list of calls each routine does. The hangup occurs in step 6 of the
"SLAVOFF" routine. Well I forgot to include the very last step in "SLAVON" which was to enable
the printer port. << %320 %33 "&p4d1p20C" >> In this POST i'm going to goahead and include the
COBOL source.....I really need an answer... In the attached source file the hangup occurs in one
of the calls to "FREAD" in the subroutine "SLAVOFF".
I would very much appreciate any HELP!, or if anyone knows of a WRQ list
I can subscribe too.
Thanks in advance,
Michael Anderson, Systems/Programmer Analyst
TIW Corporation
mailto:[log in to unmask]
--------------6A9A6D031B69
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="SLAVES.TXT"
*
$TITLE "SALVSUBS - SLAVE PRINTER SUBROUTINES"
$CONTROL DYNAMIC,LIST,BOUNDS
IDENTIFICATION DIVISION.
PROGRAM-ID. SLAVSUBS.
AUTHOR. TIW.
DATE-COMPILED.
**************************************************************
* *
* Subroutines for using a slave printer attached directly *
* to a terminal in block mode. *
* *
* SLAVCK - Checks to see if printer logical device is *
* a slave printer. *
* *
* SLAVON - Enables the slave printer. *
* *
* SLAVOFF - Disables the slave printer and does a form *
* feed and reset. Use this where you would *
* "close" a spooled printer. *
* *
* SLAVOFFNOFF - Disables the slave printer without doing a *
* form feed and reset. Use this when you *
* want to display something on the screen *
* while a report is printing. *
* *
**************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
$IF X1=OFF
SOURCE-COMPUTER. HP3000.
$IF X1=ON
SOURCE-COMPUTER. HP3000 WITH DEBUGGING MODE.
$IF
OBJECT-COMPUTER. HP3000.
SPECIAL-NAMES.
CONDITION-CODE IS CC.
$PAGE "WORKING-STORAGE"
DATA DIVISION.
******************************************************************
WORKING-STORAGE SECTION.
******************************************************************
01 I PIC S9(4) COMP.
01 N PIC S9(4) COMP.
01 PR-LDEV PIC S9(4) COMP.
01 TERM-LDEV PIC S9(4) COMP.
01 TERM-IN PIC S9(4) COMP.
01 ANSWER PIC X(20) VALUE LOW-VALUES.
01 NUM-WORK.
02 NUM-N PIC 9 OCCURS 4.
01 ENABLE-SLAVE.
02 FILLER PIC X VALUE %320.
02 EXT-DEVICE-ON.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X(9) VALUE "&p4d1p20C".
01 DISABLE-SLAVE.
02 FILLER PIC X VALUE %320.
02 LINE-FEED PIC X VALUE %12.
02 PRINTER-OFF PIC X VALUE %1.
01 PAGE-EJECT-RESET.
02 FILLER PIC X VALUE %320.
02 SEND-TO-PRINTER.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X(6) VALUE "&p4d3W".
02 FORM-FEED PIC X VALUE %14.
02 RESET-PRINTER.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "@".
01 SETUP.
02 FILLER PIC X VALUE %320.
02 FORMAT-OFF.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "X".
02 CURSOR-HOME.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "H".
02 SCROLL-UP.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "S".
02 INSERT-LINE.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "L".
01 MSG-1.
02 FILLER PIC X VALUE %320.
02 MOVE-CURSOR.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X(6) VALUE "&a0c1R".
02 CLEAR-LINE.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "K".
02 INVERSE.
03 FILLER PIC X VALUE %33.
03 FILLER PIC XXX VALUE "&dB".
02 FILLER PIC X(20) VALUE "Printing, please wai".
02 FILLER PIC X(20) VALUE "t... ".
02 FILLER PIC X(20) VALUE " ".
02 FILLER PIC X(20) VALUE " ".
01 MSG-2.
02 FILLER PIC X VALUE %320.
02 MOVE-CURSOR.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X(6) VALUE "&a0c1R".
02 DELETE-LINE.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "M".
02 FORMAT-ON.
03 FILLER PIC X VALUE %33.
03 FILLER PIC X VALUE "W".
01 PCSUPP-BUFFER.
02 FILLER PIC X VALUE %320.
02 PCSUPP-BUFF PIC X(128).
01 LDEVX PIC 9999.
*-------------- DATA BASE AREA ---------------*
01 SLVPASS PIC X(8) VALUE "READER; ".
01 SLAVDB PIC S9(4) COMP VALUE 1.
01 ALL-LIST PIC X(2) VALUE "@;".
01 STATUS-AREA.
03 CONDITION-WORD PIC S9(4) COMP VALUE 0.
88 NO-IMAGE-ERRORS VALUE 0.
88 IMAGE-ERRORS VALUE 1 THRU 9999,
-1 THRU -9999.
88 BEG-OF-CHAIN VALUE 14.
88 END-OF-CHAIN VALUE 15.
88 NO-ENTRY VALUE 17.
03 RECORD-LENGTH PIC S9(4) COMP VALUE 0.
03 RECORD-NUMBER PIC S9(9) COMP VALUE 0.
03 ENTRIES-IN-CHAIN PIC S9(9) COMP VALUE 0.
03 PREV-RECORD-NO PIC S9(9) COMP VALUE 0.
03 NEXT-RECORD-NO PIC S9(9) COMP VALUE 0.
COPY IMAGE OF COMLIB.
01 DEVICE PIC X(8) VALUE "DEVICES;".
01 DEVICE-BUFFER.
03 DEVICE-LDEV PIC X(4).
03 DEVICE-TERMTYPE PIC X(2).
03 DESCRIPTION PIC X(32).
01 SLVPRT PIC X(14) VALUE "SLAVE-PRINTER;".
01 SLVPRT-BUFFER.
03 SLVPRT-LDEV PIC X(4).
03 SLVPRT-PRINTTYPE PIC X(2).
03 SLVPRT-PRINTERDEFAULT PIC X(64).
03 DATE-STAMP PIC X(8).
03 TIME-STAMP PIC X(8).
01 DI-LDEV PIC X(5) VALUE "LDEV;".
01 WS-SLAVE-DB.
02 FILLER PIC X(02) VALUE SPACES.
02 WS-SLAVE-DBNAME PIC X(24) VALUE SPACES.
*-------- Reflections Storage area. ---------------------------
01 WRQ-COMMAND.
02 PIC X VALUE %33.
02 PIC X(3) VALUE "&oF".
01 WRQ-NOFORMFEED
PIC X(21) VALUE "SET AUTO-FORM-FEED NO".
01 WRQ-CONFIG-UNLOCK
PIC X(20) VALUE "SET CONFIG-LOCKED NO".
01 WRQ-CONFIG-LOCK
PIC X(21) VALUE "SET CONFIG-LOCKED YES".
01 WRQ-DISABLE-PRT-TRANSLATION
PIC X(36) VALUE "SET DISABLE-PRINTER-TRANSLATION YES".
01 WRQ-PRINTER-BYPASS
PIC X(22) VALUE "SET PRINTER-BYPASS YES".
01 WRQ-PRINTER-CLOSE-MANUAL
PIC X(30) VALUE "SET PRINTER-CLOSE-MANUALLY YES".
$PAGE "LINKAGE"
******************************************************************
LINKAGE SECTION.
******************************************************************
COPY USERX OF COMLIB
REPLACING == VALUE SPACES== BY ====
== VALUE ZERO== BY ====
== VALUE 0== BY ====.
01 FILE-NUM PIC S9(4) COMP.
01 SLAVE-FLAG PIC X.
01 PRINT-DEV PIC X(4).
$PAGE "CKECK TO SEE IF WE HAVE A SLAVE PRINTER"
PROCEDURE DIVISION.
******************************************************************
0100-SLAVCK SECTION.
******************************************************************
ENTRY "SLAVCK" USING USER-AREA SLAVE-FLAG.
0100-BEGIN.
MOVE SD-ASSOCIATED-DEVICE TO NUM-WORK.
MOVE ZERO TO PR-LDEV I.
MOVE 4 TO N.
0110-LOOP.
IF NUM-N (N) NUMERIC
COMPUTE PR-LDEV = PR-LDEV + (NUM-N (N) * 10 ** I)
ADD 1 TO I.
SUBTRACT 1 FROM N.
IF N GREATER THAN ZERO GO TO 0110-LOOP.
CALL INTRINSIC "WHO"
USING \\ \\ \\ \\ \\ \\ \\ TERM-LDEV.
IF PR-LDEV = TERM-LDEV
MOVE "1" TO SLAVE-FLAG
ELSE
MOVE "0" TO SLAVE-FLAG.
GOBACK.
******************************************************************
ENTRY "SLAVCKX" USING PRINT-DEV SLAVE-FLAG.
0150-BEGIN.
MOVE PRINT-DEV TO NUM-WORK.
MOVE ZERO TO PR-LDEV I.
MOVE 4 TO N.
0115-LOOP.
IF NUM-N (N) NUMERIC
COMPUTE PR-LDEV = PR-LDEV + (NUM-N (N) * 10 ** I)
ADD 1 TO I.
SUBTRACT 1 FROM N.
IF N GREATER THAN ZERO GO TO 0115-LOOP.
CALL INTRINSIC "WHO"
USING \\ \\ \\ \\ \\ \\ \\ TERM-LDEV.
IF PR-LDEV = TERM-LDEV
MOVE "1" TO SLAVE-FLAG
ELSE
MOVE "0" TO SLAVE-FLAG.
GOBACK.
$PAGE "ACTIVATE SLAVE PRINTER"
******************************************************************
0200-SLAVON SECTION.
******************************************************************
ENTRY "SLAVON" USING FILE-NUM.
0200-BEGIN.
CALL INTRINSIC "FWRITE" USING FILE-NUM SETUP \-9\ \1\.
CALL INTRINSIC "FWRITE" USING FILE-NUM MSG-1 \-94\ \1\.
PERFORM PC-SUPPORT-SLAVON.
CALL INTRINSIC "FWRITE"
USING FILE-NUM ENABLE-SLAVE \-11\ \1\.
GOBACK.
$PAGE "DE-ACTIVATE SLAVE PRINTER"
******************************************************************
0300-SLAVOFF SECTION.
******************************************************************
ENTRY "SLAVOFF" USING FILE-NUM.
0300-BEGIN.
D DISPLAY "0300-SLAVEOFF----> FOPEN".
CALL INTRINSIC "FOPEN" USING \\ \%244\ GIVING TERM-IN.
D DISPLAY "0300-SLAVEOFF----> FSETMOTE TERM-IN \%4\".
CALL INTRINSIC "FSETMODE" USING TERM-IN \%4\.
D DISPLAY "0300-SLAVEOFF----> FWRITE DISABLE-SLAVE -3 1".
CALL INTRINSIC "FWRITE"
USING FILE-NUM DISABLE-SLAVE \-3\ \1\.
D DISPLAY "0300-SLAVEOFF----> FREAD TERM-IN ANSWER \-2\".
CALL INTRINSIC "FREAD" USING TERM-IN ANSWER \-2\.
D DISPLAY "0300-SLAVEOFF----> FWRITE PAGE-EJECT-RESET -11 1".
CALL INTRINSIC "FWRITE"
USING FILE-NUM PAGE-EJECT-RESET \-11\ \1\.
D DISPLAY "0300-SLAVEOFF----> FREAD TERM-IN ANSWER -2".
CALL INTRINSIC "FREAD" USING TERM-IN ANSWER \-2\.
PERFORM PC-SUPPORT-SLAVOFF.
D DISPLAY "0300-SLAVEOFF----> FWRITE MSG-2 -12 1".
CALL INTRINSIC "FWRITE" USING FILE-NUM MSG-2 \-12\ \1\.
D DISPLAY "0300-SLAVEOFF----> FCLOSE TERM-IN 0 0".
CALL INTRINSIC "FCLOSE" USING TERM-IN \0\ \0\.
GOBACK.
$PAGE "DE-ACTIVATE SLAVE PRINTER - NO FORM FEED"
******************************************************************
0400-SLAVOFFNOFF SECTION.
******************************************************************
ENTRY "SLAVOFF_NOFF" USING FILE-NUM.
0400-BEGIN.
D DISPLAY "0400-SLAVEOFF----> FOPEN".
CALL INTRINSIC "FOPEN" USING \\ \%244\ GIVING TERM-IN.
D DISPLAY "0400-SLAVEOFF----> FSETMOTE TERM-IN \%4\".
CALL INTRINSIC "FSETMODE" USING TERM-IN \%4\.
D DISPLAY "0400-SLAVEOFF----> FWRITE DISABLE-SLAVE -3 1".
CALL INTRINSIC "FWRITE"
USING FILE-NUM DISABLE-SLAVE \-3\ \1\.
D DISPLAY "0400-SLAVEOFF----> FREAD TERM-IN ANSWER \-2\".
CALL INTRINSIC "FREAD" USING TERM-IN ANSWER \-2\.
PERFORM PC-SUPPORT-SLAVOFF.
D DISPLAY "0400-SLAVEOFF----> FWRITE MSG-2 -12 1".
CALL INTRINSIC "FWRITE" USING FILE-NUM MSG-2 \-12\ \1\.
D DISPLAY "0400-SLAVEOFF----> FCLOSE TERM-IN 0 0".
CALL INTRINSIC "FCLOSE" USING TERM-IN \0\ \0\.
GOBACK.
$PAGE "MISC PC SUPPORT"
******************************************************************
1000-MISC-PC-SUPPORT SECTION.
******************************************************************
PC-SUPPORT-SLAVOFF.
D DISPLAY "PC-SUPPORT-SLAVOFF".
PERFORM OPEN-SLAVDB.
INITIALIZE DEVICE-BUFFER.
CALL INTRINSIC "WHO" USING \\ \\ \\ \\ \\ \\ \\ I.
MOVE I TO LDEVX.
MOVE LDEVX TO SEARCH-KEY.
PERFORM GET-DEVICE-KEYED.
IF NOT NO-ENTRY
IF DEVICE-TERMTYPE = "PC"
PERFORM PC-SLAVOFF.
*---------------------------------------------------------------
PC-SUPPORT-SLAVON.
D DISPLAY "PC-SUPPORT-SLAVON".
PERFORM OPEN-SLAVDB.
INITIALIZE DEVICE-BUFFER.
CALL INTRINSIC "WHO" USING \\ \\ \\ \\ \\ \\ \\ I.
MOVE I TO LDEVX.
MOVE LDEVX TO SEARCH-KEY.
PERFORM GET-DEVICE-KEYED.
IF NOT NO-ENTRY
MOVE "LDEV;" TO SEARCH-ITEM
PERFORM FIND-SLVPRT
IF NOT NO-ENTRY
INITIALIZE SLVPRT-BUFFER
PERFORM UNTIL ( END-OF-CHAIN )
OR ( SLVPRT-PRINTTYPE = "ED" )
INITIALIZE SLVPRT-BUFFER
PERFORM GET-SLVPRT-CHAINED
END-PERFORM.
PERFORM CLOSE-SLAVDB.
IF ( DEVICE-TERMTYPE = "PC" ) AND ( SLVPRT-PRINTTYPE = "ED" )
PERFORM PC-SLAVON.
*---------------------------------------------------------------
PC-SLAVON.
*
*----------------- UNLOCK CONFIGURATION
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-CONFIG-UNLOCK %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- NO AUTO FORMFEED
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-NOFORMFEED %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- DISABLE PRINTER TRANSLATION
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-DISABLE-PRT-TRANSLATION %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- PRINTER BYPASS
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-PRINTER-BYPASS %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- CLOSE PRINTER MANUALLY
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-PRINTER-CLOSE-MANUAL %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- SELECTED PRINTER OUTPUT
INITIALIZE PCSUPP-BUFF.
STRING %33 "&oFSET PRINTER-DEFAULT "
QUOTE SLVPRT-PRINTERDEFAULT DELIMITED BY " " QUOTE %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
*----------------- LOCK CONFIGURATION
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-CONFIG-LOCK %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*---------------------------------------------------------------
PC-SLAVOFF.
*
D DISPLAY "---- UNLOCK CONFIGURATION ".
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-CONFIG-UNLOCK %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
D DISPLAY "---- CLOSE P.C. PRINTER PORT FILE".
INITIALIZE PCSUPP-BUFF.
STRING %33 "&oFCLOSE PRINTER " %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*
* DISPLAY "---- SET OUTPUT PRINTER TO WINDOWS DEFAULT".
* INITIALIZE PCSUPP-BUFF.
* STRING %33 "&oFSET PRINTER-DEFAULT " QUOTE " " QUOTE %15
* DELIMITED BY SIZE INTO PCSUPP-BUFF.
* PERFORM PC-SUPPORT-FWRITE.
*
D DISPLAY "---- LOCK CONFIGURATION".
INITIALIZE PCSUPP-BUFF.
STRING WRQ-COMMAND WRQ-CONFIG-LOCK %15
DELIMITED BY SIZE INTO PCSUPP-BUFF.
PERFORM PC-SUPPORT-FWRITE.
*------------------------------*
PC-SUPPORT-FWRITE.
PERFORM VARYING I FROM 128 BY -1
UNTIL ( I < 2 ) OR ( PCSUPP-BUFF(I:1) NOT = SPACES )
CONTINUE
END-PERFORM.
ADD 2 TO I.
D DISPLAY "IN FWRITE I=*" I "*".
D DISPLAY "IN FWRITE=" PCSUPP-BUFFER(1:I).
COMPUTE I = - ( I + 0 ).
CALL INTRINSIC "FWRITE" USING FILE-NUM PCSUPP-BUFFER
I \1\.
*------------------------------*
OPEN-SLAVDB.
MOVE 1 TO SLAVDB.
MOVE SPACES TO WS-SLAVE-DB.
MOVE " SLAVDB.SECURE.SYS;" TO WS-SLAVE-DBNAME.
MOVE "READER;" TO SLVPASS.
CALL "DBOPEN" USING WS-SLAVE-DBNAME SLVPASS
MODE-1 STATUS-AREA.
IF IMAGE-ERRORS GO TO IMAGE-ERROR.
*------------------------------*
GET-DEVICE-KEYED.
CALL "DBGET" USING WS-SLAVE-DBNAME DEVICE KEYED
STATUS-AREA ALL-ITEMS DEVICE-BUFFER SEARCH-KEY.
IF IMAGE-ERRORS AND NOT NO-ENTRY GO TO IMAGE-ERROR.
*------------------------------*
FIND-SLVPRT.
CALL "DBFIND" USING WS-SLAVE-DBNAME SLVPRT
MODE-1 STATUS-AREA SEARCH-ITEM SEARCH-KEY.
IF IMAGE-ERRORS AND NOT NO-ENTRY GO TO IMAGE-ERROR.
IF ENTRIES-IN-CHAIN = ZERO MOVE 17 TO CONDITION-WORD.
*------------------------------*
GET-SLVPRT-CHAINED.
CALL "DBGET" USING WS-SLAVE-DBNAME SLVPRT CHAINED
STATUS-AREA ALL-ITEMS SLVPRT-BUFFER NULL-ITEM.
IF IMAGE-ERRORS AND NOT END-OF-CHAIN
GO TO IMAGE-ERROR.
*------------------------------*
CLOSE-SLAVDB.
CALL "DBCLOSE" USING WS-SLAVE-DBNAME NULL-ITEM
MODE-1 STATUS-AREA.
*-------------------------------------
IMAGE-ERROR.
CALL "DBEXPLAIN" USING STATUS-AREA.
MOVE "X" TO SLAVE-FLAG.
GOBACK.
END PROGRAM SLAVSUBS.
/
--------------6A9A6D031B69--
|
|
|