Marc's Place

E$POPEN - Openen van een printerkanaal




Aanroep
 
xcall e$popen ([bestand][, verklarende_tekst])
 
Common velden, logicals en/of symbols vóór aanroep
e$print
Een record met gegevens met betrekking tot het automatisch printen van kop- en voetregels, regel-blokken, etc. Zie E$LIB:E$PRINT.H voor de individuele velden en hun doel. De meesten dien van te voren van de juiste waarde te zijn voorzien.
e$adm_pdf
De bestandsspecificatie van de Printer Definition File (PDF).
terminal
Een logical die het terminalnummer bevat. Dit nummer is nodig om de bestandsspecificatie uit de Printer Definition File op te bouwen. Drie hekjes (###) in de naam geven de plaats aan waar het terminalnummer moet komen.
e$usr
De gebruikersinstellingen, waaronder zijn of haar vaste printernummer. Dit printernummer is een nummer dat wijst naar een DBL$LP logical. DBL$LP logicals hoorden bij Vax/DIBOL. Bij de LPNUM parameter (LPQUE statement) gaf je dan een nummer mee, bijvoorbeeld LPNUM:2, en hop, het werd ergens afgedrukt. Dit nummer gaf de betreffende logical aan waarin een queue gedefinieerd was waarnaar geprint moest worden: DBL$LP + <nummer>, in dit voorbeeld dus DBL$LP2. Deze logical bevatte een verwijzing naar een wachtrij of printer, faxbox, etc.. Dat is heel handig, want zo hoef je je programma niet aan te passen indien het afdrukbestand opeens naar een andere queue gestuurd moet worden. Een beperking was dat je maar 10 printers en/of queues kon definiëren, 0 t/m 9. Een andere beperking is dat Synergex deze systematiek niet heeft overgenomen. Maar wij wèl. En ongelimiteerd. Dus DBL$LP98 is nu ook mogelijk. Onder VMS definieer je ze gewoon met ASSIGN of DEFINE, onder Unix met SET en onder MS-Windows plaats je ze in de actieve SYNERGY.INI:
DBL$LP0=EPSON Stylus COLOR 600
DBL$LP1=LTA10:
Het vaste printernummer e$usr_prtn wordt niet in deze routine maar in e$init opgehaald en is dus vóóraf aan te passen.
Tevens bevat het het administratienummer e$usr_admn waaronder gewerkt wordt. Dit nummer is nodig om de bestandsspecificatie uit de Printer Definition File (PDF) op te bouwen. Drie sterretjes (***) in de naam geven de plaats aan waar het administratienummer moet komen.
e$_curw
Venster-identificatie van het actieve uitvoervenster.
chpdf
Een kanaalnummer dat gebruikt wordt om gegevens te lezen uit de Printer Definition File (PDF). Deze variabele bevindt zich in e$lib:earth.h.
Parameters te vullen bij aanroep
bestand (a*)
De specificatie van een bestand waarnaar geprint moet worden. De meegegeven bestandsnaam kan aanwijzingen bevatten over de plaats van het administratienummer (***), terminalnummer (###) en een volgnummer (@@@).
Het volgnummer komt uit het PDF-record.
Indien deze parameter niet wordt meegegeven, wordt er door e$popen een bestandsnaam gemaakt, indien van toepassing, en wel als volgt:
<programma-naam>.<volgnummer>
verklarende_tekst (a*)
Tekst die getoond wordt als extra infomatie bij de keuze van de printer, indien een gebruiker zou kunnen kiezen.
Parameters gevuld bij terugkeer
*N/A
Common velden gevuld bij terugkeer
e$print
Een record met gegevens met betrekking tot het automatisch printen van kop- en voetregels, regel-blokken, etc. Zie E$LIB:E$PRINT.H voor de individuele velden en hun doel.
e$_err
De opgetreden fout.
000 = Alles OK.
099 = F03, F12 of niets ingegeven.
e$_lin
Het regelnummer waar de fout optrad.
Voorbeelden
Compatibiliteit met Multihouse's Printer Parameter Bestand (PPB)
Indien een migratie van XIBOL's naar E$XIB en E$LIB plaatsvindt en het PPB moet blijven zoals het is, moet je de logical E$MHPPB op 1 zetten. Dan wordt door E$POPEN een recordlengte van 70 aangehouden voor de FDF. Bij <> 1 wordt de recordlengte van het E$PDF record aangehouden.

Een voorbeeld waarbij een afdrukbestand wordt geopend via de Printer Definition File (PDF), er naar toe wordt geschreven en waarbij het wordt afgesloten en gequeued via de PDF. Van te voren worden de juiste parameters voor het afdrukken ingesteld:

e$p_chan = 99 ; kanaalnummer
e$p_pgsize = 56 ; bladhoogte in regels
e$p_line = 99 ; signaleer nieuw blad
e$p_date = e$_date ; af te drukken datum
e$p_datep = 56 ; positie van de datum in de regel
e$p_datef = 1 ; in footer[2] printen
e$p_pagep = 77 ; positie van het bladnummer in de reg
e$p_pagef = 1 ; in footer[2] printen
 
e$p_head[1] = 'BEDRIJFSNAAM ... ...'
e$p_headp[1]= 1 ; regelnummer voor head[1]
 
e$p_head[2] = 'ARTIKEL OMSCHRIJVING AANTAL ....'
e$p_headp[2]= 3 ; regelnummer voor head[2]
 
e$p_head[3] = '--------------------------------------- ....'
e$p_headp[3]= 4 ; regelnummer voor head[3]
 
e$p_foot[1] = '--------------------------------------- ....'
e$p_foot[2] = 'DATUM: ... ... BLAD:'
 
xcall e$popen
 
while .not.eof begin
...
e$p_buff = 'Af te drukken gegevens'
xcall e$print
...
end
 
xcall e$pclose

De routine kan ook naar het beeldscherm afdrukken. In zo'n geval wordt er in e$popen een apart venster gecrëerd, wat in e$pclose weer gesloten wordt.

De gebruiker heeft ook de mogelijkheid een printer te kiezen. Deze mogelijk wordt geactiveerd door e$p_num en het vaste printernummer van de gebruiker op NUL te stellen:

clear e$p_num, e$usr_prtn
e$p_chan = 99
 
xcall e$popen (, 'Testen E$POPEN')
if e$p_num.eq.0 xcall e$quit ; Geen printer gekozen

De keuzevraag ziet er als volgt uit:

 

Hieronder volgt een printerdefinitie van 'Printer 1':

 

We kiezen printer 1 en vervolgens komt er nog een vraag ter bevestiging:

 

Wanneer deze bevestigend wordt beantwoord, wordt de spoolfile, als die klaar is, naar de betreffende queue, uitvoerbestand of het beeldscherm gestuurd.

© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement