| 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_ |