The [[PRINT USING]] statement is used to [[PRINT]] formatted data to the Screen or a file using a [[STRING]] template.


{{PageSyntax}}
:: '''PRINT''' [''text$''{;|,}] '''USING''' ''template$''; ''variable''[; ...][{;|,}]


{{PageParameters}}
* Literal or variable [[STRING]] ''text$'' can be placed between PRINT and USING or it can be included in the ''template''.
* A [[semicolon]] or [[comma]] may follow the ''text'' to stop or tab the print cursor before the ''template'' [[PRINT]].
* The literal or variable [[STRING]] ''template'' should use the template symbols to display each variable [[Variable Types|type]] in the list following it.
* The list of data ''variables'' used in the ''template'' are separated by semicolons after the template string value. 
* In QB64 one [[semicolon]] or [[comma]] may follow the variable list to stop the print cursor for pending prints. QB only allowed a semicolon.


{{PageDescription}}
* The ''variables'' should be listed in the order that they are used in the template from left to right.
* If the ''template'' string is omitted or symbols don't match the ''variable(s)'' an "Illegal Function Call" [[ERROR Codes|ERROR]] will occur.
* Can convert numerical exponential or [[scientific notation]] values to normal decimal point values using less digits.
* NOTE: If the numerical value exceeds the template's digit range a % symbol will appear in the leftmost digit area.
* WARNING: The numbers displayed are rounded so the actual values are never changed and are actually more accurate.


{{PrintUsing}}


{{PageQBasic}}
* QBasic limited the number of specified digit positions to 24; QB64 has no such restriction.


{{PageExamples}}
''Example 1:'' Printing formatted data using a predefined [[STRING|string]] template variable.
{{CodeStart}} '' ''
first$ = "Bobby": last$ = "Smith"
boxes% = 1510: sales! = 4530
tmp$ = "Salesperson: &amp; &amp;  #####,.   $$#####,.##"

{{Cl|PRINT USING}} tmp$; first$; last$; boxes%; sales!
{{CodeEnd}} '' ''
{{OutputStart}}Salesperson: Bobby Smith  1,510  $4,530.00
{{OutputEnd}}
''Explanation:'' The ''Salesperson:'' text precedes the formatted data. The name lengths will change the length of the string template accordingly so columns will not all line up. If \  \ was used, the columns would stay the same, but parts of some names might be lost. If the box or sales values exceed 3 digits, a comma is used in the value every 3 digits.


''Example 2:'' How to display formatting symbols as normal text using underscores in a PRINT USING template.
{{CodeStart}}
errcode = 35
{{Cl|PRINT USING}} "Error ## occurred!"; errcode
'the ! is now displayed at the end of the printed string
{{Cl|PRINT USING}} "Error ## occurred_!"; errcode
{{CodeEnd}}
{{OutputStart}}Error 35 occurred
Error 35 occurred!
{{OutputEnd}} 
: ''Explanation:'' The first template will not print the exclamation points or error when the requested text parameters are omitted.


''Example 3:'' Exponential notation is designated after the leading digits are formatted. Digit places determine rounded value displayed.
{{CodeStart}}
{{Cl|PRINT USING}} "##.##^^^^"; 234.56
{{Cl|PRINT USING}} ".####^^^^-"; -777777
{{Cl|PRINT USING}} "+.##^^^^"; 123
{{Cl|PRINT USING}} "+.##^^^^^"; 123 '' ''
{{CodeEnd}}
{{OutputStart}} 2.35E+02
.7778E+06-
+.12E+03
+.12E+003
{{OutputEnd}}
: ''Explanation:'' Note how 5 carets in the bottom format expands the number of exponent digits to accommodate larger exponent values. 


''Example 4:'' USING does not necessarily have to immediately follow PRINT, but it must follow it in the code line.
{{CodeStart}} '' ''
money = 12345.45
tmp$ = "$$#######,.##"

{{Cl|PRINT}} "I have this much money!"; {{Cl|PRINT USING|USING}} tmp$; money '' ''
{{CodeEnd}}
{{OutputStart}}
I have this much money!   $12,345.45
{{OutputEnd}}
: ''Note:'' This can also be used to print the USING formatting characters outside of the template.


{{PageSeeAlso}}
* [[PRINT]], [[PRINT USING (file statement)|PRINT #, USING]]
* [[LPRINT]], [[LPRINT USING]]


{{PageNavigation}}
