Annotated Ada Reference ManualLegal Information
Contents   Index   References   Search   Previous   Next 

F.3.1 Picture String Formation

1/3
{AI05-0299-1} A well-formed picture String, or simply picture String, is a String value that conforms to the syntactic rules, composition constraints, and character replication conventions specified in this subclause. 

Dynamic Semantics

2/1
This paragraph was deleted.
3
picture_string ::=
   fixed_$_picture_string
 | fixed_#_picture_string
 | floating_currency_picture_string
 | non_currency_picture_string
4
fixed_$_picture_string ::=
   [fixed_LHS_signfixed_$_char {direct_insertion} [zero_suppression]
     number [RHS_sign]

 | [fixed_LHS_sign {direct_insertion}] [zero_suppression]
     number fixed_$_char {direct_insertion} [RHS_sign]

 | floating_LHS_sign number fixed_$_char {direct_insertion} [RHS_sign]

 | [fixed_LHS_signfixed_$_char {direct_insertion}
     all_zero_suppression_number {direct_insertion}  [RHS_sign]

 | [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number {direct_insertion}
     fixed_$_char {direct_insertion} [RHS_sign]

 | all_sign_number {direct_insertionfixed_$_char {direct_insertion} [RHS_sign]
5
fixed_#_picture_string ::=
   [fixed_LHS_signsingle_#_currency {direct_insertion}
     [zero_suppressionnumber [RHS_sign]

 | [fixed_LHS_signmultiple_#_currency {direct_insertion}
     zero_suppression number [RHS_sign]

 | [fixed_LHS_sign {direct_insertion}] [zero_suppression]
     number fixed_#_currency {direct_insertion} [RHS_sign]

 | floating_LHS_sign number fixed_#_currency {direct_insertion} [RHS_sign]

 | [fixed_LHS_signsingle_#_currency {direct_insertion}
     all_zero_suppression_number {direct_insertion} [RHS_sign]

 | [fixed_LHS_signmultiple_#_currency {direct_insertion}
     all_zero_suppression_number {direct_insertion} [RHS_sign]

 | [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number {direct_insertion}
     fixed_#_currency {direct_insertion} [RHS_sign]

 | all_sign_number {direct_insertionfixed_#_currency {direct_insertion} [RHS_sign]
6
floating_currency_picture_string ::=
   [fixed_LHS_sign] {direct_insertionfloating_$_currency number [RHS_sign]
 | [fixed_LHS_sign] {direct_insertionfloating_#_currency number [RHS_sign]
 | [fixed_LHS_sign] {direct_insertionall_currency_number {direct_insertion} [RHS_sign]
7
non_currency_picture_string ::=
   [fixed_LHS_sign {direct_insertion}] zero_suppression number [RHS_sign]
 | [floating_LHS_signnumber [RHS_sign]
 | [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number {direct_insertion}
     [RHS_sign]
 | all_sign_number {direct_insertion}
 | fixed_LHS_sign direct_insertion {direct_insertionnumber [RHS_sign]
8
fixed_LHS_sign ::=  LHS_Sign
9
LHS_Sign ::=  + | – | <
10
fixed_$_char ::= $
11
direct_insertion ::=  simple_insertion
12
simple_insertion ::=  _ | B | 0 | /
13
zero_suppression ::=  Z {Z | context_sensitive_insertion} | fill_string
14
context_sensitive_insertion ::=  simple_insertion
15
fill_string ::=  * {* | context_sensitive_insertion}
16
number ::=
   fore_digits [radix [aft_digits] {direct_insertion}]
 | radix aft_digits {direct_insertion}
17
fore_digits ::= 9 {9 | direct_insertion}
18
aft_digits ::=  {9 | direct_insertion} 9
19
radix ::= . | V
20
RHS_sign ::= + | – | > | CR | DB
21
floating_LHS_sign ::=
   LHS_Sign {context_sensitive_insertionLHS_Sign {LHS_Sign | context_sensitive_insertion}
22
single_#_currency ::= #
23
multiple_#_currency ::= ## {#}
24
fixed_#_currency ::= single_#_currency | multiple_#_currency
25
floating_$_currency ::=
   $ {context_sensitive_insertion} $ {$ | context_sensitive_insertion}
26
floating_#_currency ::=
   # {context_sensitive_insertion} # {# | context_sensitive_insertion}
27
all_sign_number ::=  all_sign_fore [radix [all_sign_aft]] [>]
28
all_sign_fore ::=
   sign_char {context_sensitive_insertionsign_char {sign_char | context_sensitive_insertion}
29
all_sign_aft ::= {all_sign_aft_charsign_char

all_sign_aft_char ::=  sign_char | context_sensitive_insertion
30
sign_char ::= + | – | <
31
all_currency_number ::=  all_currency_fore [radix [all_currency_aft]]
32
all_currency_fore ::=
   currency_char {context_sensitive_insertion}
     currency_char {currency_char | context_sensitive_insertion}
33
all_currency_aft ::= {all_currency_aft_charcurrency_char

all_currency_aft_char ::= currency_char | context_sensitive_insertion
34
currency_char ::= $ | #
35
all_zero_suppression_number ::=  all_zero_suppression_fore [ radix [all_zero_suppression_aft]]
36
all_zero_suppression_fore ::=
   zero_suppression_char {zero_suppression_char | context_sensitive_insertion}
37
all_zero_suppression_aft ::= {all_zero_suppression_aft_charzero_suppression_char

all_zero_suppression_aft_char ::=  zero_suppression_char | context_sensitive_insertion
38
zero_suppression_char ::= Z | *
39
The following composition constraints apply to a picture String: 
40
A floating_LHS_sign does not have occurrences of different LHS_Sign Character values.
41
If a picture String has '<' as fixed_LHS_sign, then it has '>' as RHS_sign.
42
If a picture String has '<' in a floating_LHS_sign or in an all_sign_number, then it has an occurrence of '>'.
43/1
{8652/0088} {AI95-00153} If a picture String has '+' or '–' as fixed_LHS_sign, in a floating_LHS_sign, or in an all_sign_number, then it has no RHS_sign or '>' character.
44
An instance of all_sign_number does not have occurrences of different sign_char Character values.
45
An instance of all_currency_number does not have occurrences of different currency_char Character values.
46
An instance of all_zero_suppression_number does not have occurrences of different zero_suppression_char Character values, except for possible case differences between 'Z' and 'z'. 
47
A replicable Character is a Character that, by the above rules, can occur in two consecutive positions in a picture String.
48
A Character replication is a String 
49
char & '(' & spaces & count_string & ')'
50
where char is a replicable Character, spaces is a String (possibly empty) comprising only space Character values, and count_string is a String of one or more decimal digit Character values. A Character replication in a picture String has the same effect as (and is said to be equivalent to) a String comprising n consecutive occurrences of char, where n=Integer'Value(count_string).
51
An expanded picture String is a picture String containing no Character replications. 
51.a
Discussion: Since 'B' is not allowed after a RHS sign, there is no need for a special rule to disallow "9.99DB(2)" as an abbreviation for "9.99DBB" 
NOTES
52
3  Although a sign to the left of the number can float, a sign to the right of the number is in a fixed position.

Wording Changes from Ada 95

52.a/2
{8652/0088} {AI95-00153-01} Corrigendum: The picture string rules for numbers were tightened.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe