At line 1 added 97 lines |
%%(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) |
/% |
---- |