Difference between revisions of "PRINT USING"

From QB64 Wiki
Jump to navigation Jump to search
imported>Clippy
m
m (Remove incorrect digit width limitation text)
 
(31 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The '''PRINT USING''' statement is used to [[PRINT]] formatted data to the Screen or a file using a [[STRING]] template.
+
The [[PRINT USING]] statement is used to [[PRINT]] formatted data to the Screen or a file using a [[STRING]] template.
  
  
::::''Syntax:'' PRINT [#,] USING template$; variable; list; ...etc.
+
{{PageSyntax}}
 +
:: '''PRINT''' [''text$''{;|,}] '''USING''' ''template$''; ''variable''[; ...][{;|,}]
  
  
::::Template is a literal or variable [[STRING|string]] using the following formatting characters:
+
{{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.
  
{| border=1]]
 
|-
 
| '''&''' || Prints an entire string value. Length should be limited as template width will vary.
 
|-
 
| '''\''' || Denotes the start and end point of a fixed string area with spaces between(LEN = spaces + 2).
 
|-
 
| '''!''' || Prints only the leading character of a string value.
 
|-
 
| '''#''' || Denotes a numerical digit. An appropriate number of digits should be used for values received.
 
|-
 
| '''^^^^''' || Prints a numerical value in exponential format.
 
|-
 
| '''.''' || Denotes a number's decimal point position. Also determines value accuracy.
 
|-
 
|  ''',''' || Placed to left of decimal point, prints a comma every 3 places left of the decimal point.
 
|-
 
|  '''+''' || Denotes position of the number's sign.
 
|-
 
| '''-''' || Placed after the number, displays the number's sign after the number (negative only).
 
|-
 
| '''$$''' || Prints a dollar sign immediately before the highest non-zero digit position of the numerical value.
 
|-
 
| '''**'''  || Prints an asterisk in any leading empty spaces of a numerical value. Specifies 2 extra digit positions.
 
|-
 
|'''**$''' || Combines ** and $. Negative values will display minus sign to left of $.
 
|}
 
  
 +
{{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.
  
* The list of data variables used in the template are '''separated by semicolons''' after the template string value.
 
* The variables should be listed in the order that they are used in the template from left to right.
 
* No more than 25 # digit places are allowed in a template number or an [[ERROR Codes|error]] will occur.
 
* Normal text is allowed in the template also (see example).
 
* '''NOTE:''' If the numerical value exceeds the template's digit range a % symbol will appear in the leftmost digit area.
 
  
 +
{{PrintUsing}}
  
''Example:'' Printing formatted data using a predefined [[STRING|string]] template variable.
+
 
 +
{{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}} '' ''
 
{{CodeStart}} '' ''
 +
first$ = "Bobby": last$ = "Smith"
 +
boxes% = 1510: sales! = 4530
 
tmp$ = "Salesperson: & &  #####,.  $$#####,.##"
 
tmp$ = "Salesperson: & &  #####,.  $$#####,.##"
 +
 
{{Cl|PRINT USING}} tmp$; first$; last$; boxes%; sales!
 
{{Cl|PRINT USING}} tmp$; first$; last$; boxes%; sales!
 
{{CodeEnd}} '' ''
 
{{CodeEnd}} '' ''
{{OutputStart}}
+
{{OutputStart}}Salesperson: Bobby Smith  1,510  $4,530.00
Salesperson: Bobby Smith  1,510  $4,530.00
 
 
{{OutputEnd}}
 
{{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.
 
''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.
  
  
''See also:''  
+
''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]]
 
* [[PRINT]], [[PRINT USING (file statement)|PRINT #, USING]]
 
 
* [[LPRINT]], [[LPRINT USING]]
 
* [[LPRINT]], [[LPRINT USING]]
  
  
 
{{PageNavigation}}
 
{{PageNavigation}}

Latest revision as of 07:23, 1 March 2021

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


Syntax

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


Parameters

  • 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 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.


Description

  • 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 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.


Template is a literal or variable string using the following formatting characters:


  & Prints an entire string value. STRING length should be limited as template width will vary.
  \  \ Denotes the start and end point of a fixed string area with spaces between(LEN = spaces + 2).
  ! Prints only the leading character of a string value. Exclamation points require underscore prefix.
  # Denotes a numerical digit. An appropriate number of digits should be used for values received.
^^^^ After # digits prints numerical value in exponential E+xx format. Use ^^^^^ for E+xxx values.*
  . Period sets a number's decimal point position. Digits following determine rounded value accuracy.
  ,. Comma to left of decimal point, prints a comma every 3 used # digit places left of the decimal point.
  + Plus sign denotes the position of the number's sign. + or - will be displayed.
  - Minus sign (dash) placed after the number, displays only a negative value's sign.
  $$ Prints a dollar sign immediately before the highest non-zero # digit position of the numerical value.
  ** Prints an asterisk in any leading empty spaces of a numerical value. Adds 2 extra digit positions.
 **$ Combines ** and $$. Negative values will display minus sign to left of $.
  _ Underscore preceding a format symbol prints those symbols as literal string characters.

Note: Any string character not listed above will be printed as a literal text character.

* Any # decimal point position may be specified. The exponent is adjusted with significant digits left-justified.


QBasic/QuickBASIC

  • QBasic limited the number of specified digit positions to 24; QB64 has no such restriction.


Examples

Example 1: Printing formatted data using a predefined string template variable.

first$ = "Bobby": last$ = "Smith" boxes% = 1510: sales! = 4530 tmp$ = "Salesperson: & & #####,. $$#####,.##" PRINT USING tmp$; first$; last$; boxes%; sales!

Salesperson: Bobby Smith 1,510 $4,530.00

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.

errcode = 35 PRINT USING "Error ## occurred!"; errcode 'the ! is now displayed at the end of the printed string PRINT USING "Error ## occurred_!"; errcode

Error 35 occurred Error 35 occurred!

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.

PRINT USING "##.##^^^^"; 234.56 PRINT USING ".####^^^^-"; -777777 PRINT USING "+.##^^^^"; 123 PRINT USING "+.##^^^^^"; 123

2.35E+02 .7778E+06- +.12E+03 +.12E+003

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.

money = 12345.45 tmp$ = "$$#######,.##" PRINT "I have this much money!"; USING tmp$; money

I have this much money! $12,345.45

Note: This can also be used to print the USING formatting characters outside of the template.


See also



Navigation:
Keyword Reference - Alphabetical
Keyword Reference - By Usage
Main Wiki Page