| 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) |
| /% |
| ---- |