Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>4gl By SMCNew to Visual Studio Code? Get it now.
4gl By SMC

4gl By SMC

4gl by SMC V1

|
12 installs
| (0) | Free
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

4gl By SMC (4GL, PER)

Estensione per Visual Studio Code dedicata allo sviluppo in Informix 4GL, con supporto avanzato per moduli .per, .4gl, .smc, .std e altro ancora.

✨ Funzionalità principali generali e specifiche SMC

  • 🧩F1 Tag automatico

  • 🧩F2 Commento di un blocco selezionato premendo

  • 🧠CTRL+F3 autoidenta tutto il file

  • 🧠CTRL+F4 autoidenta solo il pezzo di codice selezionato

  • 🔍F4 xfind sulla selezione con apertura del file dove è presente la dichiarazione

  • 💻F5 Compilazione veloce salva e lancia in terminale xc -c -g -d se compila con successo ti prepara il link altrimenti ti apre il file *.err con il cursore sull'errore

  • 💻F6 Compilazione completa salva e lancia in terminale gendef && fastins && xc -c -g -d se compila con successo ti prepara il link altrimenti ti apre il file *.err con il cursore sull'errore

  • 📁CTRL-F10 Selezione rapida dell'ambiente divisione e modulo

  • 📁In file *.std tasto destro è presente la funzione inizializza smc che crea il file smc con le funzioni CTRL_PERS e CTRL_SALTO e se basefun aggiunge anche la 06

  • 🔍F12 se non trova la definizione della funzione nel file fa un xfind in automatico attivabile in maniera integrata in VSCODE anche con il CTRL CLICK sulla funzione

  • 🧠 Check delle varibili di sistema,e costrutti del linguaggi maiuscoli

  • 🔍 Analisi del tree delle funzioni con albero visibile

  • 📁CTRL-F11 tagga tutti i file per,smc,std,dep,rep e def

  • 📁CTRL-F12 aggiunge al CSV per committ tutti i file per,smc,std,dep,rep e def

  • 🧠In ambiente cliente puo eseguire il comando faitar -d cli -m nomemodulo -z -I -w

  • 🧠Verifica dei prefissi di variabile in funzione del contesto

✨ SETTINGS

  • Creazione o meno della cartella del modulo nel workspace, se crea sposta dentro altrimenti cerca il modulo figlio di SI folder nel tuo workspace
  • Possibilità di eseguire o meno il codice al termine della compilazione avvenuta con successo, viene rilevato l'ambiente ed esegue kgo o rgo
  • Controllo prefisso variabili dafault(false)

💡 SNIPPET 4GL

Prefisso Descrizione Codice generato
main Blocco MAIN MAIN … END MAIN
func Funzione 4GL FUNCTION fp_$1() … END FUNCTION
if Struttura IF THEN ELSE IF $1 THEN … ELSE … END IF
case Struttura CASE CASE … WHEN … OTHERWISE … END CASE
for Ciclo FOR FOR $1 = $2 TO $3 … END FOR
while Ciclo WHILE WHILE $1 … END WHILE
dispto DISPLAY TO con attributi DISPLAY BY NAME $1 TO $2.* ATTRIBUTES ($3)
disp DISPLAY BY NAME DISPLAY BY NAME $1.*
input INPUT BY NAME con attributi INPUT BY NAME $1 … ATTRIBUTES (UNBUFFERED, REQUIRED)
inputa INPUT ARRAY con attributi/on change INPUT ARRAY $1 FROM $2.* … ATTRIBUTES (UNBUFFERED, REQUIRED, ON CHANGE = $3)
msg Messaggio a schermo MESSAGE "$1"
let Assegnazione LET $1 = $2
call Chiamata funzione CALL $1($2)
callret Chiamata funzione con RETURNING CALL $1($2) RETURNING $3
aft Blocco AFTER AFTER $1 …
bef Blocco BEFORE BEFORE $1 …
win OPEN WINDOW con form OPEN WINDOW $1 AT $2, $3 WITH FORM "$4"
construct CONSTRUCT BY NAME CONSTRUCT BY NAME $1 ON $2.*
action ON ACTION ON ACTION $1 …
dialog DIALOG con ESCAPE DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM) … ON KEY(INTERRUPT,ESCAPE) EXIT DIALOG … END DIALOG
disparray DISPLAY ARRAY con attributi DISPLAY ARRAY $1 TO $2.* ATTRIBUTES (UNBUFFERED)
defstr DEFINE STRING DEFINE $1 STRING
defint DEFINE INTEGER DEFINE $1 INTEGER
defsmall DEFINE SMALLINT DEFINE $1 SMALLINT
defdec DEFINE DECIMAL DEFINE $1 DECIMAL($2,$3)
defchar DEFINE CHAR DEFINE $1 CHAR($2)
defvar DEFINE VARCHAR DEFINE $1 VARCHAR($2)
defbool DEFINE BOOLEAN DEFINE $1 BOOLEAN
defdate DEFINE DATE DEFINE $1 DATE
defdt DEFINE DATETIME DEFINE $1 DATETIME YEAR TO FRACTION($2)
defarr DEFINE ARRAY DEFINE $1 ARRAY[$2] OF $3
defrec DEFINE RECORD DEFINE $1 RECORD … END RECORD
defreclike DEFINE RECORD LIKE DEFINE $1 RECORD LIKE $2 … END RECORD
db DATABASE DATABASE $1
connect CONNECT TO (user/pw) CONNECT TO "$1" USER "$2" USING "$3"
disconnect DISCONNECT DISCONNECT
starttran START TRANSACTION START TRANSACTION
commit COMMIT WORK COMMIT WORK
rollback ROLLBACK WORK ROLLBACK WORK
whener WHENEVER ERROR CONTINUE WHENEVER ERROR CONTINUE
error Comando ERROR ERROR "$1"
whensql WHENEVER SQLERROR STOP WHENEVER SQLERROR STOP
onexc ON EXCEPTION ON EXCEPTION … END EXCEPTION
try TRY/CATCH simulato WHENEVER ERROR GOTO on_error … ON_ERROR: …
select SELECT … INTO … FROM … WHERE SELECT $1 INTO $2 FROM $3 WHERE $4
update UPDATE … SET … WHERE UPDATE $1 SET $2 = $3 WHERE $4
delete DELETE FROM … WHERE DELETE FROM $1 WHERE $2
insert INSERT INTO … VALUES INSERT INTO $1 ($2) VALUES ($3)
esc ON KEY(ESCAPE,INTERRUPT) ON KEY(ESCAPE,INTERRUPT)
menuaction MENU con ON ACTION MENU "$1" … ON ACTION "$2" … ON ACTION $4 … END MENU
winwait fgl_winwait CALL fgl_winwait("$1")
à Commento (snippet COMMENT) # $1
int Variabile INTEGER (inline) ${1:name} INTEGER
smallint Variabile SMALLINT (inline) ${1:name} SMALLINT
decimal Variabile DECIMAL (inline) ${1:name} DECIMAL(${2:10},${3:2})
float Variabile FLOAT (inline) ${1:name} FLOAT
string Variabile STRING (inline) ${1:name} STRING
char Variabile CHAR (inline) ${1:name} CHAR(${2:20})
varchar Variabile VARCHAR (inline) ${1:name} VARCHAR(${2:50})
date Variabile DATE (inline) ${1:name} DATE
datetime Variabile DATETIME (inline) ${1:name} DATETIME YEAR TO SECOND
bool Variabile BOOLEAN (inline) ${1:name} BOOLEAN
text Variabile TEXT (inline) ${1:name} TEXT
byte Variabile BYTE (inline) ${1:name} BYTE
interval Variabile INTERVAL (inline) ${1:name} INTERVAL YEAR TO MONTH
QUERY / PREPARE / DECLARE Cursor dinamico (SELECT) LET vg_filtros=" SELECT * " … PREPARE q_$1 FROM vg_filtros; DECLARE c_$1 CURSOR FOR q_$1
UPDATE / PREPARE PREPARE UPDATE dinamico LET vg_filtros=" UPDATE " … PREPARE q_$1 FROM vg_filtros
CASE (alt.) Blocco CASE (alternativo) CASE $1 … WHEN $2 … OTHERWISE … END CASE
IFT IF THEN compatto IF $1 THEN … END IF
IFE IF ELSE compatto IF $1 THEN … ELSE … END IF
IFS IF STATUS per uscita ciclo `LET vg_status = STATUS; IF vg_status <> 0 THEN EXIT WHILE FOR … END IF`
OFC OPEN/FETCH/CLOSE con STATUS OPEN $1 USING $2; FETCH $1 INTO $3; LET vg_status=STATUS; CLOSE $1
FUNCTION_VR Funzione con variabili di ritorno Intestazione commentata + `FUNCTION f$2(vp_cmd ) … RETURN vr_return vr_error`
FUNPAR Funzione load parametri FUNCTION fp_$1_load_params() … END FUNCTION
PARAZI Leggi parametri da ana_parazi CALL fp_sel_parazi("…","…") RETURNING … IF vl_errore = 0 THEN …
CTRLPERS / CTRL_PERS / CT_AFTER_FIELD AFTER FIELD personalizzati FUNCTION fp_$1_ctrlpers(vp_flag, vp_nomecampo) … RETURN vr_error
CTRLSALTO / CTRL_SALTO / CT_BEFORE_FIELD BEFORE FIELD personalizzati FUNCTION fp_$1_ctrlsalto(vp_flag, vp_nomecampo) … RETURN vr_error
ETPAR Leggi parametri da sma_etpar CALL fs_leggi_param("", "$1", "$2", "S") RETURNING … IF vl_unictpar != 0 THEN …
MESSAGE / MESS24 / MESS_24 Messaggio utente std_24 `CALL fs_std_24("…", 0, 0, "nome_colonna" 0, 0)`
POPUP_SN / AVV_OK Popup OK singolo CALL fs_std_07c("Attenzione","Button,Ok_000","Text, …", "", "", "", "")
POPUP_SN / CONF_SN Conferma Sì/No IF fs_std_06c("qk","Title, …","Text, …","Si_000","No_000","Default,S,N") THEN … ELSE … END IF
getdati / cursor / query Cursore di lettura dati LET vl_sql="SELECT * FROM $1 WHERE 1=1 $2"; PREPARE p_ … DECLARE c_ … OPEN c_ … FOREACH … array append … END FOREACH
nuovo / new / crea Testata “nuovo modulo” Blocco commento intestazione con PACCHETTO/CLIENTE/FUNZIONALITÀ/DATA/NOME/TAG/TICKET
modifica / modify / aggiorna Testata “modifica modulo” Blocco commento intestazione modifiche con DATA/NOME/TAG/TICKET/MODIFICHE
nz Null→Zero fs_NullToZero($1)
ctn Check null→boolean fs_std_ctnull($1)
i2s int→string fs_int2str($1)
40a Conversioni 40a fs_std_40a($1)
  1. Digita il prefisso
  2. Seleziona lo snippet suggerito

💡 SNIPPET PER

Prefisso Descrizione Codice generato
perheader Header e struttura base di un form .per SCHEMA, SCREEN, END
layout Blocco LAYOUT con GRID LAYOUT { ... } END
grid Blocco GRID per layout tabellare GRID { ... } END
table Tabella con double click TABLE { ... } END
folder / page Blocco FOLDER con PAGE multipagina FOLDER PAGE { ... } END
tables Blocco TABLES per tabelle TABLES ...
attribs Blocco ATTRIBUTES con più campi ATTRIBUTES ...
instr / screenrecord Blocco INSTRUCTIONS con SCREEN RECORD SCREEN RECORD { ... }
comments Riga di commento # ...
group Blocco GROUP con testo e contenuto GROUP (TEXT="...") {}
vbox Blocco VBOX verticale con splitter VBOX (SPLITTER) {}
label Etichetta con TAG LABEL ... TEXT="..."
edit Campo EDIT con scroll e commento EDIT ... = ..., TAG="..."
buttonedit Campo BUTTONEDIT con ACTION=zoom BUTTONEDIT ...
datetimeedit Campo DATETIMEEDIT con titolo e commento DATETIMEEDIT ...
  1. Digita il prefisso
  2. Seleziona lo snippet suggerito
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft