{{htmlmetatags>metatag-robots=() metatag-title=(PROCEDURE...END PROC | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Pagina del manuale per PROCEDURE...END PROC) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(PROCEDURE...END PROC | ugBASIC User Manual) metatag-og:description=(Pagina del manuale per PROCEDURE...END PROC) }} ====== ugBASIC Manuale Utente ====== ===== PROCEDURE...END PROC ✓ ===== ===== SINTASSI ===== PROCEDURE name[ par1[, par2[, ... ]]] ] ... END PROC[ expression ] ==== SCOPO ==== Questa coppia di parole chiave crea una procedura assegnandole un nome. Il nome è quindi seguito da un elenco di parametri e la procedura deve terminare con i comandi ''END PROC''. I comandi dovrebbero essere posti su singole righe, ma non è obbligatorio. Seguendo la convenzione in essere su altri BASIC dell'epoca, come il Simon's BASIC o il Tuned Simon's BASIC, il nome della procedura può anche contenere spazi. In tal caso, lo spazio finale non sarà considerato come parte del nome. È possibile posizionare la definizione della procedura ovunque nel programma. Quando ugBASIC incontra una definizione di procedura, la procedura viene riconosciuta come tale e viene eseguito un salto all' ''END PROC''. In questo modo non vi è alcun rischio di eseguire accidentalmente la procedura. Di seguito al nome della procedura può essere posto un elenco di parametri. Questo crea un gruppo di variabili locali che possono essere caricate direttamente dal programma principale. Da notare che i valori da caricare nei parametri devono essere inseriti tra parentesi quadre come parte della chiamata di procedura. Questo sistema funziona altrettanto bene con costanti e variabili, ma anche array. Se è necessario immettere più di un parametro, i parametri devono essere separate da virgole. @example Come opzione è possibile indicare un valore da restituire da parte della procedura. Il valore va indicato tra parentesi quadre. Il valore sarà, quindi, copiato nella variable ''PARAM'' e restituito dalla chiamata, se la chiamata è stata fatta nel contesto di una espressione. Importante: se il pragma ''OPTION CALL AS GOTO'' è attivo, l'istruzione sarà considerata un ''NOP''. ==== ESEMPIO ==== PROCEDURE test[ a, b ] PRINT "HELLO WORLD! "; (a+b) END PROC PROCEDURE sumOf( x, y ) END PROC[x+y] PROCEDURE hundred END PROC[100] Si vedano anche i seguenti file di esempio: * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/procedures_hello_01.bas|procedures_hello_01.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/procedures_hello_02.bas|procedures_hello_02.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/procedures_hello_03.bas|procedures_hello_03.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/procedures_parameters_01.bas|procedures_parameters_01.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/procedures_parameters_02.bas|procedures_parameters_02.bas]]'' ==== ABBREVIAZIONE ==== PrcdEePrb ==== DISPONIBILE SU ==== * * Atari (400/800) * Atari XL/XE * Commodore 128 (MOS 8502) * Commodore 128 (Zilog Z80) * Commodore 64 * Commodore 64+REU * TRS-80 Color Computer * TRS-80 Color Computer 3 * ColecoVision * Amstrad CPC 664 * Dragon 32 * Dragon 64 * Thomson MO5 * Thomson MO5 * Olivetti Prodest PC128 * Commodore PLUS/4 * SEGA SC-3000 * SEGA SG-1000 * * VG-5000 * Commodore VIC-20 * ZX Spectrum 48 ==== PROBLEMI? ==== Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=SEGNALAZIONE SU PROCEDURE...END PROC|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]