|
> Does anyone know how to send a true type font (binary physical file or IFS
> file) to a TCP attached printer natively, without using third party products
> or additional licensed programs or writing their own programs.
Why this restriction? I could write a very simple ILE RPG program in
2 minutes that would solve the problem.
> Using the CPYF font.ttf *PRINT might work with the right overrides or *PRTF
> but I am fuzzy on this.
I don't see how. CPYF copies DB2/400 file, not a stream file. I suppose
you could try converting the file... Still, you wouldn't want *PRINT,
that converts the data to text...
> This really old DOS PC coomand works using a binary copy:
> COPY /B selectfont.bin \\myserver\myprinter
> COPY /B font.ttf \\myserver\myprinter
> COPY /B makeperm.bin \\myserver\myprinter
This code looks to be a workaround for the fact that some MS-DOS software
doesn't send font information to a printer. Frankly, this is an ugly hack
in the first place. Why do you want to perpetuate it?
Wouldn't it make more sense to create a WSCST object that sends the font
so that the font can be selected using the regular FONT keyword in DDS?
> the cp command in QSHELL does not seem to be able to address iSeries printer
> devices or queues for output? can they?
> I would use an environment variable QIBM_QSH_CMD_OUTPUT('DEV=PRT01')
> If that was legal.
> I would be nice if this would work;
> addenvvar QIBM_QSH_CMD_OUTPUT('FILE=qsys.lib/qusrsys/qsysprt.file')
No. That would NOT be nice. First of all, and environment variable is
just that -- a variable. Let's not add sub-variables inside a variable!!
For example, this is the QShell command to set the variable, as it is now:
QIBM_QSH_CMD_OUTPUT=Y
You seem to be suggesting making the following into valid syntax:
QIBM_QSH_CMD_OUTPUT=FILE=qsys.lib/qusrsys.lib/qsysprt.file
I'm sorry, YUCK. If you must do this with environment variables (which is
illogical to me, to say the least) at least create a new variable, rather
than trying to stuff multiple sub-variables into a single variable.
However, I'd submit that a better future enhancement would be to allow
QShell commands to redirect into a printer file. For example:
cat my_file.txt > /qsys.lib/mylib.lib/myprtf.file
Or, for your situation, if you wanted to send binary data to a printer,
you'd do this:
cat -c selectfont.bin > /qsys.lib/mylib.lib/myusrasc.file
Where "myusrasc.file" was created with CRTPRTF DEVTYPE(*USERASCII). The
-c switch to cat prevents it from converting the data to text, and the
DEVTYPE(*USERASCII) tells the system to send the data to the printer as-is
without any sort of interpretation, transformation, modification, etc.
Hopefully I was clear... the above code will NOT work, it's intended as a
suggestion for a future release of QShell.
What you MIGHT be able to do is use the "cat -c" utility that I displayed
above to a PF, and then use CPYF to go from the PF to the PRTF. Do *NOT*
however, use *PRINT on the CPYF. Instead, do something like:
CRTPF MYLIB/MYPF RCDLEN(132)
QSH CMD('cat -c selectfont.bin > /qsys.lib/mylib.lib/mypf.file/mypf.mbr')
OVRPRTF FILE(QSYSPRT) DEVTYPE(*USERASCII) CTLCHAR(*NONE)
CPYF FROMFILE(MYPF) TOFILE(QSYSPRT) FROMRCD(1)
DLTOVR QSYSPRT
I havent tried that code, but it might work... worth a try, unless you
think it's too much like writing a program.
> How can I do this on a V5R2 modern machine without finishing the RPG
> program I am writing to do it?
If you ARE going to write a program, though, you should use the IFS APIs
to read the stream file in binary mode and copy the data directly to a
userascii printer... again, userascii means that the system will send it
as-is.
I wouldn't try to incorporate that into another program, but rather make
it a standalone program that can be used to copy any stream file in binary
mode to a printer. Then it can be used in CL programs or QShell programs
(depending on your requirements and how you design the program) as needed.
Personally, though, I'd vote for creating a WSCST object.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.