At line 1 added 209 lines |
%%(display:none) |
{{{ |
WikiUp |
}}} |
/% |
[{TableOfContents }]\\ |
!!! OBIETTIVO\\ |
Trattamento e trasformazione numeri in stringhe, numeri romani, stringhe editate e viceversa. |
|
!!! PREREQUISITI\\ |
D/COPY QILEGEN,£TNUE |
C/COPY QILEGEN,£TNU |
|
!!! PARAMETRI\\ |
!! PARAMETRI DI INPUT\\ |
! Funzione: _i_campo £TNUTP_n_ Tipo di input\\ |
N) Trasformare un numero in un campo editato |
X) Trasformare un numero in una stringadi lettere XAB (riporta il numero XAB dell'eventuale bolla emessa) |
A) Trasformare una stringa in un numero |
L) Trasformare un numero in una stringa di livello |
S) Trasformare una stringa in un campo editato |
Z) Trasformare un numero in un campo editato ma formatta anche il numero 0 |
R) Trasformare un numero in un numero romano |
! Parametro di controllo: _i_campo £TNUPD_n_\\ |
Formato: pd --> dove __p__ è il numero di punti separatori (0-4) e __d__ è il numero dei decimali (0-7) |
! Separatore decimali: _i_campo £TNUSD_h_\\ |
' '(blanks)=virgola |
'.'=punto |
! Numero: campo £TNUNR\\ |
numero da convertire in stringa |
! Allineamento: _i_campo £TNUAL_h_\\ |
--> Se 'S' restituisce il campo editato ed allineato a sinistra |
--> Se 'X' restituisce il campo editato ed allineato a sinistra rimuovendo gli zero non significativi |
! Campo non editato: _i_campo £TNUNE_h_\\ |
In funzione 'N' o 'Z' se diverso da ' ' ritorna anche il campo non editato |
In funzione 'A' se diverso da ' ' esclude i caratteri non editati |
! Formato rappresentazione segno\\ |
' ' = segno - a destra |
'S' = segno - a sinistra |
!! PARAMETRI DI OUTPUT\\ |
! _i_campo £TN_n_\\ |
Numero editato e allineato a dx (schiera) |
! _i_campo £TNUSX_n_\\ |
Numero editato e allineato a sx |
! _i_campo £TNUED_n_\\ |
Numero non editato |
|
!!! ESEMPI DI FLUSSI\\ |
|
!! FLUSSO (caso 1)\\ |
Riceve un numero e un parametro di controllo e restituisce |
una schiera di 30 caratteri contenente il numero allineato |
a destra (con il segno, blank o meno, a posizione 30), |
senza gli zeri non significativi e con il numero voluto |
di decimali e di punti separatori delle migliaia. |
! Input: £TNUTP Tipo di input: N=numerico\\ |
£TNUPD Parametro controllo. Formato: pd, dove |
p = numero di punti separatori (0-4) |
d = numero di decimali (0-7) |
£TNUSD Separatore decimali |
' '= virgola altro= punto |
£TNUNR Numero da editare |
£TNUAL Se 'S' restituisce anche il campo editato |
Se 'X' come 'S' e rimozione zeri non significativi |
£TNUNE Se diverso da ' ' ritorna anche il campo |
non editato |
£TNUFS Formato rappresentazione segno |
' ' = segno - a destra |
'S' = segno - a sinistra |
! Output: £TN Numero editato e allineato a dx (schiera)\\ |
£TNUSX Numero editato e allineato a sx |
£TNUED Numero non editato |
|
Esempi: |
£TNUNR £TNUPD _______ £TN ________ |
111222333444,555 33 ---> 111.222.333.444,555 |
111222333444,555 12 111222333.444,55 |
-123456,7 33 123.456,700- |
-123456,7 00 123456- |
0,001 32 0,00 |
0 32 (blank) |
|
!! FLUSSO (caso 2)\\ |
Riceve una schiera di caratteri e restituisce un numero. |
Vengono trattati i soli caratteri numerici, si intercetta |
la virgola per l'impostazione dei decimali. |
:T03 Input: £TNUTP Tipo di input: A=alfanumerico |
£TNUSD Separatore decimali |
' '= virgola altro= punto |
£TN Schiera con numero da convertire |
N.B. |
Per garantire continuità con il passato, se vengono |
impostati £TNUAL e/o £TNUNE, la funzione £TNUTP viene |
forzata a "S" (caso 3) |
! Output: £TNUNR Numero ottenuto\\ |
|
Esempi: |
_______ £TN_________ £TNUPD £TNUNR |
A2 0/1.AA4,- .. 2014- *NB |
1- .. 1 |
111.222.333.444,555 .. 111222333444,555 |
111222333.444,55 .. 111222333444,55 |
123.456,700- .. 123456,700- |
-123456- .. 123456- |
00,00 .. 0 |
(blank) .. 0 |
|
*NB: |
Se l'ultimo carattere della stringa è uno tra 'èJKLMNOPQR' la copy |
lo interpreta come un carattere non editato e aggiunge alla |
stringa rispettivamente (0-,1-,2-,3-,4-,5-,6-,7-,8- o 9-) |
per evitare questo comportamento impostare £TNUNE='1' e l'ultimo |
carattere verrà escluso |
Esempi: |
_______ £TN_________ £TNUNE £TNUNR |
100L . 1003- |
100R . 1009- |
100L 1 100 |
100R 1 100 |
|
!! FLUSSO (caso 3)\\ |
Riceve una schiera di caratteri e un parametro di controllo |
e restituisce un campo editato. |
! Input: £TNUTP Tipo di input: S=alfanumerico\\ |
£TNUPD Parametro controllo. Formato: pd, dove |
p = numero di punti separatori (0-4) |
d = numero di decimali (0-7) |
£TNUSD Separatore decimali |
' '= virgola altro= punto |
£TN Schiera con numero da convertire |
£TNUAL Se 'S' restituisce anche il campo editat |
e allineato a sinistra |
£TNUNE Se diverso da ' ' ritorna anche il campo |
non editato |
£TNUFS Formato rappresentazione segno |
' ' = segno - a destra |
'S' = segno - a sinistra |
:T03 Output: £TN Numero editato e allineato a dx (schiera |
£TNUSX Numero editato e allineato a sx |
£TNUED Numero non editato |
£TNUNR Numero ottenuto |
!! FLUSSO (caso 4)\\ |
Riceve un numero e restituisce una schiera contenente una |
stringa di lettere per XAB |
! Input: £TNUTP Tipo di input: X=lettere per XAB\\ |
£TNUPD Parametro controllo. Formato: pd, dove |
p = numero di punti separatori (0-4) |
d = numero di decimali (0-7) |
£TNUSD Separatore decimali |
' '= virgola altro= punto |
£TNUNR Numero da editare |
£TNUAL Allineamento: |
'D'= a destra altro= a sinistra |
! Output: £TNUNX Numero editato per XAB\\ |
|
Esempi: |
£TNUNR £TNUPD _________£TNUNX__________ |
1000000,100 13 ---> ' AZZZ.ZZZ,AZZ ' |
|
|
:T02 FLUSSO (caso 5) |
Riceve un numero, un carattere di riempimento (default '.') |
e una lunghezza massima, e lo traforma in una stringa di |
livello. |
! Input: £TNUTP Tipo di input: L=stringa di livello\\ |
£TNUNR Numero da editare (max 99) |
£TNULL Lunghezza totale (min. 2 max.30) |
£TNULC ' ' Riempimento '.' |
'x' Riempimento carattere x |
! Output: £TNUSX Stringa di composizione del livello\\ |
|
Esempi: |
£TNUNR £TNULC £TNULL £TNUSX |
1---+----+--... |
1 5 1 |
3 5 ..3 |
6 5 ....6 |
1 - 5 1 |
3 - 5 --3 |
6 - 5 ----6 |
! FLUSSO (caso 6)\\ |
Uguale a flusso 1 se £TNUNR è diverso da 0. |
Se £TNUNR uguale a 0 restituisce una stringa formattata |
Esempi: |
£TNUNR £TNUPD _______ £TN ________ |
0 32 0,00 |
0 30 0 |
|
|
! FLUSSO (caso 7)\\ |
Riceve un numero (da 1 a 9999) e lo trastorma in una stringa |
contenente il numero romano |
Se il numero è maggiore di 9999 in £TNUSX ritorna blanks |
Esempi: |
£TNUNR £TNUSX |
123 CXXIII |
|
|
|
!!! ESEMPIO DI CHIAMATA (Caso 1)\\ |
MOVEL'N' £TNUTP |
Z-ADD<numero> £TNUNR |
Z-ADD<pd> £TNUPD |
EXSR £TNU |
MOVEA£TN <stringa> |
|
_1_============================================================================================== |
ATTENZIONE !! : £TN è una schiera quindi la stringa va inserita con un MOVEA non solo con un MOVE, pena l'overflow. è consigliabile pulire la schiera £TN con un CLEAR prima di valorizzarla. |
==============================================================================================_n_ |