|
<exhale........> I hope you are a person who exudes patience, 'cause you're gonna need it. I saw the "QMS Magnum card" subject in my inbox and immediately thought "oh my g.." Now that I've set the tone <g>, let me dig out the last program I had to write, doing exactly the same thing you're doing now; taking the code from an existing, working (?) program and using the guts to print barcodes on your new report. What follows is pulled directly from that source member. Of particular interest to you should be the ^PY^- "command"; I "printed" this at the top of every page, just in case someone decided to print a "page range" of pages. Since you're printing the control characters, and no bar codes, I strongly suspect this is your problem. Hopefully, the ^PY^- will be just what you need to get going. Otherwise, you're in for a long haul. I actually debugged this g..-awful thing by making changes to a physical flatfile and copying that to a QPRINT file to print; I didn't actually touch source code for this for about 5 days. Good luck and Godspeed! * * * TUTORIAL ON USING MAGNUM CODES * * * ************************************************************* Note: This application prints a manual picking document with barcodes. Use all-around caution when modifying the printer file ASN120P. The barcodes are printed using a specialized "Magnum" card in the line printer; this card interprets control characters in the print stream to convert a character string into a barcode. A Mannesmann Tally model 691 printer was used in testing this report. If you print this report on any printer that does not have a Magnum card, you will not get barcodes and you will see all of the Magnum control codes being sent to the printer (good for debugging). Of particular difficulty was the ability to print the barcode so that it lined up with the text line. This required that both the barcode and the text line be printed in "Magnum mode". Normally, the text would be printed in "straight-through mode", but "Magnum mode" takes up the entire horizontal band from left to right, wiping out any "straight-through mode" text that is "printed" in the same horizontal area. The QMS technical manual describing the Magnum control codes, in a word, sucks. Although program & printer file source members are not normally the place to insert a tutorial on utilizing special-case programming techniques, I am including a brief guide here because there was particular difficulty developing this report as described above; also, there is no way to ensure that a separate document would be available or locatable at a later date. ^PY^- Switches "Magnum mode" on. This must be issued before any special Magnum printing takes place and must appear in column 1 of the print line. ^PN^- Switches "Magnum mode" off. This must be issued after all Magnum printing is completed and must appear in column 1 of the print line. If Magnum mode is not switched off, the printer remains in Magnum mode (the printer's LCD display shows "Online Graphics"), and regular, non-Magnum reports that follow may print in an unpredictable manner. ^M0308000 Tells the Magnum controller to print the data that follows at 0.3 inches tall and 0.8 inches wide with 0.0 inches & 0 dots justification down. ^T1080 Tells the Magnum controller to print the data that follows at 10.8 inches & 0 dots from the left margin. ^BNK Tells the Magnum controller to print the data that follows as a barcode. "B" specifies a horizontal barcode, "N" specifies "No translation auto-printing" (don't ask), and "K" specifies the type of barcode, in this case, an "Interleaved 2 of 5". ^G The "Universal Sequence Terminator" that the Magnum controller uses to determine the end of a string of data being processed. ^I002 Defines an "Interrupt indicator" to the Magnum controller, in this example, an interrupt is to occur after 0.0 inches & 2 dots of the current pass is processed. The Magnum terminator ^- (carriage return) is required immediately following an "Interrupt indicator". The technical manual devotes an entire chapter to this thing, and it seems that its primary purpose is to circumvent the limitations of a finite pass buffer. However, (in conjunction with the ^I000 used on the text line) it was only after specifying this that I was able to get the barcode to print on the same line as the text. In testing, ^I010 meant that the text line appeared one tenths of an inch below the barcode. Decreasing this number made the barcode print closer to the text line. I did not specify ^I000 on the barcode record because it appears from the manual that this is a special case that "flushes" the buffer. ^M0308000^T1080^BNK1234567 ^G^I002^- This string prints an "Interleaved 2 of 5" barcode using a value of '1234567' with a height of 0.3 inches and a width of 0.8 inches (with no justification), 10.8 inches to the right of the left margin. The interrupt indicator is set on to occur after 2 dots of the current pass is processed. ^M0101000 Tells the Magnum controller to print the data that follows at 0.1 inches tall and 0.1 inches wide with 0.0 inches & 0 dots justification down. This appears to print the normal 6 lines per inch / 10 characters per inch, even though at 0.1 inches tall, you'd really be printing at 10 lines per inch. Go with what works. ^T0000 Tells the Magnum controller to print the data that follows right at the left margin. ^M0101000^T0000textdata....endoftextdata^I000^- This string prints a normal text line at the left margin consisting of the sample string "textdata....endoftextdata". The "interrupted" printing of the barcode is completed. IMPORTANT NOTE: Even though this totally screws up visually lining up the columns when developing the report layout, the Magnum codes MUST be on the same line as the data. Attempts at trying to "print" the ^M^T sequence on the previous line failed, and the only way to get it to work was to keep everything on the SAME line. Don't deviate from this, unless you enjoy pulling your hair out. Dan Bale IT - AS/400 Handleman Company 248-362-4400 Ext. 4952 -------------------------- Original Message -------------------------- We are trying to print a barcode on a Printronix P300 that has a magnum card in it using QMS Code V. We had old programs that used this and copied in the code for the barcode section but all that prints is the string of control characters, no barcode. I know from the archives that other people are still using this technology so I'm hoping someone can help. Any help is appreciated. Ed Chabot The Marlin Firearms Company 100 Kenna Drive North Haven, CT 06473 (203)985-3254 +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.