%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! Introduzione\\
Le funzioni sono operazioni che possono essere specificate direttamente nel codice e che vengono precedute sempre dal carattere %.\\
%%quote
.    C                   IF        %SUBST(AAA030:2:1)='='
/%
----
In questo caso non c'è più bisogno di utilizzare una variabile di appoggio.\\
\\
!!! Su stringhe\\
* __%LEN__,ritorna la lunghezza di una variabile\\
* __%REPLACE(str_sostituente,str_originale,parti_da,quanti_caratteri)__, Sostituisce una stringa all'interno di un'altra, permettendo di specificare da che posizione partire e quanti caratteri sostituire.\\
* __%SCAN(str_ricerca : str_origine : a_partire_da)__, scansione stringa Es.: EVAL POSIZ=%SCAN('PP':'PIPPO')       POSIZ avrà valore 3\\
* __ %SUBST(stringa:inizio:lunghezza)__, estrae una sottostringa e può essere utilizzata anche per modificare delle variabili Es.  EVAL %SUBST(VAR:3:4)='****'       Se inizialmente VAR conteneva ABCDEFGHIL, ora EVAL conterrà AB****GHIL\\
* __%TRIM(stringa)__, elimina eventuali spazi presenti all'inizio e alla fine della stringa\\
* __%TRIML(stringa)__,  elimina eventuali spazi presenti all'inizio della stringa\\
* __%TRIMR(stringa) __,  elimina eventuali spazi presenti alla fine della stringa\\
\\
!!! Numeriche\\
* __%ABS__, ritorna il valore assoluto\\
* __%CHAR__,  trasforma un numerico in stringa\\
* __%INT__, ritorna la parte intera arrotondata all'inferiore\\
* __%INTH__, come %INT, ma con arrotondamento al valore più vicino\\
\\
Le seguenti funzioni si applicano alla divisione tra due numeri interi:\\
* __%DIV__, ritorna la parte intera del risultato\\
* __%REM__, ritorna il resto (intero)\\
\\
!!! Su lunghezza campi e schiere\\
* __%ELEM__, ritorna il numero di elementi di una schiera ed è utile per evitare errori di indice schiera, senza definire 'tappi'.\\
%%quote
.     C                   CLEAR                 $X
.     C                   DO        *HIVAL
.     C                   ADD       1           $X
.     C                   IF        $X>%ELEM(SCK)
.     C                   LEAVE
.     C                   ENDIF
.     C                   ....
.     C                   ENDDO
/%
----
\\
* __%SIZE__, ritorna la lungezza (in byte) di un campo o di una costante\\
* __%DECPOS__, ritorna il numero di decimali (in byte)\\
* __%XFOOT__, somma il contenuto di una schiera\\
\\
!!! Su archivi\\
* __%EQUAL__, è vera se il posizionamento ha trovato un record con la chiave specificata.\\
\\
%%quote
.     C     KYTRA2        SETLL     C5TRANR
.     C                   IF        %EQUAL
.     C     KYTRA2        CHAIN     C5TRANR
.     C                   ENDIF
/%
----
\\
* __%FOUND__, è vera se è stato trovato un record\\
\\
%%quote
.     C     KYTRA2        CHAIN     C5TRANR
.     C                   IF        %FOUND
.     C                   MOVEL     W5REC         £C52RE                                  .
.     C                   ENDIF
/%
----
\\
* __%EOF__ (End Of File), è vera se si è arrivati alla fine del file\\
\\
%%quote
.     C     KYMOAN        READE     C5MOANR
.     C                   IF        %EOF
.     C                   MOVEL     'FINE'        £C52MS                                         .
.     C                   ENDIF
/%
----
\\
Per usare queste funzioni negate, la sintassi è:\\
\\
%%quote
.     C                   IF        NOT(%EOF)
.     C                   IF        NOT(%FOUND)
/%
----
\\
* __%OPEN__, permette di controllare se un file è aperto o meno, rendendo inutile l'utilizzo di una variabile per il controllo di una apertura condizionale del file\\
\\
%%quote
.     C                   IF        %OPEN(nomefile)
.     C                   IF        NOT %OPEN(nomefile)
/%
----