Esempi |
Questo capitolo è suddiviso in due parti:
Stampa le linee più lunghe di 72 caratteri:
IF GT(STRLEN(L), 72) PRINTLN L FI
Stampa in ordine inverso i campi di ciascuna riga, assunti separati da ',':
H = TOKNEW(L, ",") FOR X = TOKNUM(H) TO 1 STEP -1 PRINT TOKGET(H, X) NEXT PRINTLN "" TOKFREE(H)
Somma i numeri nella prima colonna (assunta separata da ',') e stampa totale e media:
Totale = ADD(Totale, TOKEN(L, 1, ",")) IF EOF PRINTLN "La somma è " Totale ", la media è " FDIV(Totale, N) FI
Ricopia un programma C ed inserisce i file inclusi disponibili:
NewL = LTRIM(L, " ") IF STREQ(TOKEN(NewL, 1, " "), "#include") File = STRIPQUOTES(TOKEN(NewL, 2, " ")) IF EQ(ISFILE(File), 1) FINSERT(File) IGNORE FI FI PRINTLN L
Stampa tutte le linee il cui primo campo è differente dal precedente:
Field1 = TOKEN(L, 1, ",") IF STRNEQ(Field1, Prev) PRINTLN L FI Prev = Field1
Converte una data dal formato DATE_TYPE al formato YY[YY]MMDD:
NewDate = STRTRAN(DCONVDATE(Date, 2), "/", "")
Nel pacchetto Proteus sono inclusi numerosi programmi di esempio, che è possibile esaminare ed utilizzare come base per sviluppare nuovi programmi.
I seguenti programmi si trovano nella sottodirectory samples della distribuzione standard; selezionando il nome del programma a lato sarà possibile vederne il codice sorgente:
437tolat.prt |
trasforma del testo in formato PC-codepage 437 in formato ISO Latin 1 (per quanto possibile); dimostra le funzioni di mappatura |
arc.prt | crea un archivio contenente tutti i file specificati, estraibile mediante dearc.prt; dimostra le funzioni sui file |
asc2ebcd.prt | trasforma il file in ingresso nel file in uscita mappando i caratteri dalla codifica ASCII alla codifica EBCDC (utilizzata da IBM® AS/400); utilizzare ebcd2asc.prt per fare l'operazione opposta. Dimostra le funzioni di mappatura. |
ascstat.prt |
mostra la frequenza di ripetizione di ciascun carattere in un file; dimostra vettori, parametri sulla linea di comando, formattazione risultati, attraversamento stringhe |
bingo.prt |
estrazione casuale dei numeri dall'1 al 90, senza reinserimento; dimostra code, vettori, il generatore di numeri casuali, una UDF |
cb1000.prt | introduce in emulazione di tastiera i dati in arrivo da un dispositivo connesso attraverso dispositivo Ethernet Client Bridge (tipo Symbol CB1000). Per il corretto funzionamento è necessario che il dispositivo sia configurato in modo da accettare connessioni dal PC sul quale viene fatto girare questo programma, il quale può essere installato anche come script associato al servizio Proteus. Dimostra: funzioni sui socket, funzioni per emulazione di tastiera. |
cb1000db.prt | salva sul database CODICI.MDB i dati in arrivo da un dispositivo connesso attraverso Ethernet Client Bridge (tipo Symbol CB1000). Per il corretto funzionamento è necessario che il CB1000 sia configurato in modo da accettare connessioni dal PC sul quale viene fatto girare questo programma, il quale può essere installato anche come script associato al servizio Proteus. Dimostra: funzioni sui socket, funzioni DAO. |
check.prt | verifica che il file specificato non contenga caratteri al di fuori del range ASCII 32-126, 13, 10. Dimostra alcune funzioni per il trattamento di stringhe. |
checkpar.prt |
verifica che le parentesi tonde, quadrate, graffe corrispondano; dimostra pile, varie funzioni su stringhe, l'uso delle UDF ONSTART e ONEND |
chgdat2.prt |
trasforma la prima data di ogni riga in un formato più leggibile; dimostra le funzioni predefinite sulle date, il tokenizzatore statico, la variabile predefinita MONTHS |
chgdate.prt |
cambia ogni data in un formato più leggibile; dimostra il tokenizzatore dinamico, REXMATCH, varie funzioni su stringhe |
clipboard.prt |
funzioni sulla clipboard di Windows; dimostra come è possibile invocare funzioni esterne, dopo averle realizzate e compilate in una DLL. Si veda il capitolo sulle funzioni esterne per ulteriori informazioni. |
codice32.prt | funzioni per la codifica e la decodifica del Codice 32 (Farmaceutico italiano) |
codqt.prt | accetta codice/quantità e li salva sul file operator.TXT; dimostra le principali funzioni interattive di Proteus. |
convert.prt | converte il file binario in ingresso in un array introducibile in un programma C. |
crc32.prt |
utilizza la funzione CRC32per calcolare il test di ridondanza ciclica a 32 bit Ansi X3.66 sul primo file specificato, normalizzandolo inoltre a 512 e 1024 bytes con il byte ASCII 26 |
dbfcreat.prt | crea un archivio DBF a partire da un file di testo; l'archivio contiene due campi di tipo carattere, "CODICE" (8 caratteri) e "DESC" (30 caratteri); il file di testo conterrà il codice nei primi 8 caratteri di ogni riga e la descrizione nei successivi 30 caratteri. Prima di trasferire i dati nel database, li ordina sul codice attraverso un AVL. Dimostra come convertire i dati numerici di Proteus in WORD o DWORD e viceversa. |
dbfdump.prt | stampa la struttura di un file DBF ed il suo contenuto |
dearc.prt | estrae i file contenuti in un archivio creato con arc.prt. I file sono estratti nella directory corrente |
decnum.prt |
dimostrazione di una libreria utente; UDF che stampa i numeri interi con i separatori delle migliaia e li allinea al centro, a destra o a sinistra in un certo numero di spazi |
decrypt.prt |
utilizza la funzione DECRYPT per decifrare il primo file specificato con le chiavi indicate; se si desidera specificare più di una chiave, racchiuderle tra virgolette; utilizzare encrypt.prt per produrre file cifrati |
demime64.prt |
semplice decoder Mime Base 64 per file codificati in singola sezione; utilizzare mime64.prt per codificare i file |
denum.prt | rimuove tutti i numeri di riga dal file sorgente, scrivendo il risultato sulla destinazione.Il programma sorgente dovrà essere un file BASIC con numeri di riga |
detab.prt |
elimina le tabulazioni; dimostra la funzione DETAB |
doc.prt |
estrae la documentazione (tra le direttive !bdoc e !edoc ) e (opzionalmente, se si specifica il parametro REM) i commenti dai file Proteus indicati; dalle stringhe estratte elimina il carattere di commento iniziale (; e #) |
dynaset.prt | mostra un esempio di recordset di tipo Dynaset, ottenuto attraverso una query su Sql Server. Il codice estrae tutti i clienti (CFANAGRA) i cui documenti di vendita (DOC) hanno nelle righe (DOCRIGHE) un particolare articolo; i nomi dei clienti corrispondenti sono salvati in un file di testo, dove ogni campo è separato dall'altro dal carattere "|" (pipe). Dimostra le funzioni DAO. |
ebcd2asc.prt | trasforma il file in ingresso nel file in uscita mappando i caratteri dalla codifica EBCDC (utilizzata da IBM® AS/400) alla codifica ASCII; utilizzare asc2ebcd.prt per fare l'operazione opposta. Dimostra le funzioni di mappatura. |
encrypt.prt |
utilizza la funzione CRYPT per cifrare il primo file specificato con le chiavi indicate; se si desidera specificare più di una chiave, racchiuderle tra virgolette; utilizzare decrypt.prt per decifrare i file prodotti |
entab.prt |
aggiunge tabulazioni; dimostra la funzione ENTAB |
extfunc.prt | dimostra come è possibile invocare una funzione esterna, dopo averla realizzata e compilata in una DLL. Si veda il capitolo sulle funzioni esterne per ulteriori informazioni. |
fact.prt |
stampa i fattoriali di 1-20; dimostra la funzione predefinita FACT |
filefunc.prt |
dimostrazione di una libreria utente;
UDF per:
|
getch.prt | mostra i valori restituiti dalla funzione GETCH per ogni tasto premuto, finché l'utente non preme ESC |
glob.prt |
dimostrazione di una libreria utente; UDF per ottenere il vettore dei file che soddisfano una certa specifica |
hexdump.prt | stampa in formato leggibile (esadecimale) il contenuto del file specificato |
htmindex.prt |
crea un nuovo file contenente tutti i bookmarks presenti in ogni file HTML corrispondente alla specifica; utilizzato per produrre l'indice analitico del manuale di Proteus; dimostra l'uso delle funzioni sulle directory, la lettura di righe da file diversi da quello di input, REXMATCH e varie funzioni su stringhe |
latto437.prt |
trasforma del testo in formato ISO Latin 1 in formato PC-codepage 437 (per quanto possibile); dimostra le funzioni di mappatura |
liner.prt |
premette il numero di riga ad ogni linea del sorgente; dimostra la possibilità di ri-elaborare lo stesso file sorgente, l'utilizzo dell'UDF ONEND |
listdup.prt | trova i file identici per contenuto nella cartella specificata e visualizza i loro nomi; dimostra l'utilizzo della funzione CRC32 |
matrix.prt |
dimostrazione di una libreria utente; UDF che implementano le operazioni su una matrice simulandola attraverso i vettori |
mdbdump.prt | visualizza il contenuto di tutte le tabelle contenute nel database MDB specificato come primo parametro. Dimostra le funzioni DAO. |
mime64.prt |
semplice encoder Mime Base 64 per file binari; utilizzare demime64.prt per decodificare i file prodotti |
mulblnk.prt |
sostituisce due spazi per ogni spazio; aggiunge due spazi dopo '(', due spazi prima di ')', due spazi prima e dopo ','; dimostra come il numero dei separatori sia ininfluente in un programma Proteus (se eseguito su un programma valido, restituisce un programma valido e funzionalmente identico, a parte il numero di spazi in eventuali stringhe) |
myfact.prt |
stampa i fattoriali di 1-20; dimostra l'utilizzo di una UDF ricorsiva |
palind.prt |
stampa tutti i palindromi più lunghi di due caratteri presenti nell'input; dimostra il tokenizzatore statico, la funzione REVERSE, l'utilizzo di una UDF |
pctune.prt | suona una melodia in formato RTTTL attraverso lo speaker del PC. Dimostra l'utilizzo della funzione BEEP. |
ping.prt | invia ping ad un indirizzo remoto, visualizzando i tempi di risposta, finché l'utente non preme Esc sulla tastiera. Dimostra l'utilizzo delle funzioni sui Socket e come convertire i dati numerici di Proteus in WORD o DWORD e viceversa. |
prnform.prt |
esempio di script CGI: riceve un form e ritorna una pagina HTML con i valori dei campi |
protform.prt |
pretty printer per programmi Proteus; aggiunge indentazione
standard e mantiene le righe sotto i 75 caratteri di lunghezza; effettua anche un
rudimentale controllo sulla sintassi; se eseguito su un programma Proteus corretto,
restituisce un programma funzionalmente identico; dimostra:
|
prt2htm.prt |
formatta un programma Proteus in HTML, con evidenziazione sintattica; il
testo è convertito in Iso Latin 1 da PC-437, se specificato. Questo programma è stato utilizzato per formattare tutti gli esempi in questo manuale; una sua variante, che ordina alfabeticamente i file HTML e li collega gli uni agli altri, ha prodotto gli esempi di questo capitolo. |
remblnk.prt |
rimuove tutte le righe bianche; programma elementare |
remc.prt |
rimuove tutti i commenti C-style; dimostra molte funzioni su stringhe |
remcpp.prt |
rimuove tutti i commenti C++ - style; dimostra molte funzioni su stringhe |
remvb.prt | rimuove i commenti dai file Visual Basic specificati; dimostra molte funzioni su stringhe |
rex.prt |
stampa una sequenza alternata di '1' e '0'; l'interesse risiede nel contenuto del programma, che dimostra moltissimi esempi di espressioni regolari estese e semplici |
scanner.prt | introduce in emulazione di tastiera i dati in arrivo da un dispositivo seriale (ad esempio uno scanner per codici a barre). Questo programma può essere installato come script associato al servizio Proteus. Dimostra l'utilizzo della funzione SENDKEYS e l'uso delle porte seriali. |
send.prt | invia un file sulla porta seriale e con i parametri specificati; dimostra le funzioni sulle seriali |
sendlpt.prt | invia un file sulla porta parallela (invio diretto, senza passare per driver di Windows); dimostra le funzioni sui file di Windows |
simpremi.prt | questo programma simula un generatore di premi; dimostra l'uso del generatore di numeri casuali |
sngblnk.prt |
rimpiazza linee bianche multiple con una singola riga bianca; programma elementare |
spooler.prt | verifica la presenza di un file; nel caso esista e sia scrivibile (quindi non bloccato per aggiornamento da altri processi), lo elabora inviando delle stringhe (ad esempio i comandi per produrre un'etichetta su una stampante per barcode) unendole con i dati disponibili nel file. La stampante alla quale vengono inviati i dati è specificata attraverso l'indirizzo di rete e la porta. Dimostra l'utilizzo delle funzioni sui Socket. |
statc.prt |
statistiche su un programma C; riporta:
dimostra:
|
tables.prt |
tabelline dall'1 al 10; dimostra un impiego della libreria matrix.prt |
test.prt |
dimostra l'uso delle librerie decnum.prt e filefunc.prt |
todos.prt |
trasforma un file di testo nel formato Dos; dimostra la trasformazione implicita di Proteus |
tolower.prt | rinomina tutti i file corrispondenti alla specifica in modo che il loro nome risulti costituito solo da caratteri minuscoli |
tomac.prt |
trasforma un file di testo nel formato Macintosh; dimostra l'identificatore predefinito EOL |
toshort.prt | rinomina tutti i file corrispondenti alla specifica nel formato Dos (8 + 3 caratteri) |
tounix.prt |
trasforma un file di testo nel formato Unix; dimostra l'identificatore predefinito EOL |
toupper.prt | rinomina tutti i file corrispondenti alla specifica in modo che il loro nome risulti costituito solo da caratteri maiuscoli |
txtform.prt |
formatta il testo in linee di non più di 60 caratteri di lunghezza; inizia una nuova riga ad ogni '.'; dimostra il tokenizzatore statico ed alcune funzioni su stringa |
uplog.prt | invia un file sulla porta seriale e con i parametri specificati, salvando tutti i caratteri ritornati dalla periferica destinataria; dimostra le funzioni sulle seriali |
uudecode.prt |
decodifica un file UU-encoded in un'unica sezione |
uuencode.prt |
semplice UU-encoder che codifica un file binario |
wc.prt |
stampa alcune statistiche sul file sorgente:
Dimostra il tokenizzatore statico, la UDF ONEND |
xcomp.prt |
permette di confrontare un gruppo di file con un'altro in un differente albero di directory; dimostra come Proteus sia in grado di leggere indifferentemente file binari o di testo, le funzioni ricorsive, l'accesso alle variabili pubbliche da UDF |
xmas.prt | stampa un testo sotto forma di albero, con un singolo carattere in cima, 3 caratteri nella seconda riga, 5 caratteri nella terza, ecc. |
Inizio pagina | Prossimo argomento | Argomento precedente | Indice per argomenti | Indice analitico |