Las impresoras nunca han sido mi punto fuerte. Hace unos días uno de mis clientes se cambió a Windows 7 x64 y le dejó de funcionar mi DLL compilada en NetExpress 3.1 que imprimía los tickets.
La imresión se hacía de manera clásica:
Código COBOL:
SELECT PRINT-FILE
ASSIGN TO PRINTER WS-PUERTO
No logré hacerlo funcionar, siempre me daba FS=9. Luego encontré este artículo de MF, según el cual el Run-Time de NetExpress inferior a la versión 5.1 daba este problema:
Runtime error 9/013 when attempting to print to LPTn: where the physical printer port is mapped via a NET USE statement on Windows 7 - Enterprise Server Knowledge Base - Enterprise Server - Micro Focus Community
También en ese artículo dicen de utilizar las rutinas para imprimir vía Windows, pero yo nunca las he usado:
Demo - The PC_PRINTER library routines - Net Express/Server Express Knowledge Base - Net Express / Server Express - Micro Focus Community
Así que para solucionar rápidamente el tema, lo que hice fue escribir en un fichero TXT y luego lanzar el comando siguiente en PowerCOBOL:
Código COBOL:
MOVE SPACES TO TICK-PRINT
STRING "CMD /c Type Print.txt>" LNK-PORT
DELIMITED BY SIZE INTO TICK-PRINT
INVOKE POW-SELF "Execute" USING TICK-PRINT POW-SWHIDE
Y funciona. El problema es que han dejado de funcionar los códigos de escape (apertura de cajón, y comandos de diferentes tamaños de letras).
¿A qué se debe esto, es por el tema de pasar por un TXT en vez de llamar directamente la impresora o se debe configurar la impresora de alguna forma particular?
Gracias de antemano por vuestras respuestas.
Dasije,
Rapinto,
Nitzer,