*!* 31.08.2026 *!* subagent masuratoare argumente *!* masoara empiric comportamentul VFP9 la argumente in plus fata de LPARAMETERS declarat, *!* atat pentru rutine locale cat si pentru rutine dintr-un fisier de proceduri separat (IN) SET SAFETY OFF SET TALK OFF CLOSE ALL lcLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_vfp_args_in_plus_log.txt' lcExt = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\proceduri_test_args.prg' IF FILE(lcLog) DELETE FILE (lcLog) ENDIF loglin('SAFETY=' + SET('SAFETY') + ' RESOURCE=' + SET('RESOURCE')) loglin('=== START masuratoare argumente in plus VFP9 ===') *-- CAZ 1 LOCAL: DO rutina WITH a catre PROCEDURE fara niciun LPARAMETERS loglin('') loglin('--- CAZ1 LOCAL: DO rutina_noparam WITH "valA" (fara LPARAMETERS) ---') TRY DO rutina_noparam WITH 'valA' loglin('CAZ1 LOCAL: fara eroare') CATCH TO loErr loglin('CAZ1 LOCAL: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 2 LOCAL: DO rutina WITH a,b catre PROCEDURE cu LPARAMETERS p1 (un singur parametru) loglin('') loglin('--- CAZ2 LOCAL: DO rutina_1p WITH "valA","valB" (LPARAMETERS p1) ---') TRY DO rutina_1p WITH 'valA', 'valB' loglin('CAZ2 LOCAL: fara eroare') CATCH TO loErr loglin('CAZ2 LOCAL: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 3 LOCAL: rutina(a,b,c) sintaxa de functie catre LPARAMETERS p1,p2 loglin('') loglin('--- CAZ3 LOCAL: rutina_2p("valA","valB","valC") (LPARAMETERS p1,p2) ---') TRY lcRes = rutina_2p('valA', 'valB', 'valC') loglin('CAZ3 LOCAL: fara eroare, rezultat=' + lcRes) CATCH TO loErr loglin('CAZ3 LOCAL: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 4 LOCAL control: rutina(a) catre LPARAMETERS p1,p2 -- argument in MINUS loglin('') loglin('--- CAZ4 LOCAL (control, argument in minus): rutina_2p("valA") ---') TRY lcRes = rutina_2p('valA') loglin('CAZ4 LOCAL: fara eroare, rezultat=' + lcRes) CATCH TO loErr loglin('CAZ4 LOCAL: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 1 IN FISIER SEPARAT: DO rutina IN altfisier.prg loglin('') loglin('--- CAZ1 IN: DO rutina_noparam_ext WITH "valA" IN (lcExt) ---') TRY DO rutina_noparam_ext WITH 'valA' IN (lcExt) loglin('CAZ1 IN: fara eroare') CATCH TO loErr loglin('CAZ1 IN: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 2 IN FISIER SEPARAT loglin('') loglin('--- CAZ2 IN: DO rutina_1p_ext WITH "valA","valB" IN (lcExt) ---') TRY DO rutina_1p_ext WITH 'valA', 'valB' IN (lcExt) loglin('CAZ2 IN: fara eroare') CATCH TO loErr loglin('CAZ2 IN: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY *-- CAZ 3 si 4 IN FISIER SEPARAT: sintaxa de functie nu suporta clauza IN, *-- mecanismul echivalent folosit real in cod e SET PROCEDURE TO ADDITIVE loglin('') loglin('--- CAZ3/4 IN: SET PROCEDURE TO (lcExt) ADDITIVE, apoi rutina_2p_ext(...) ---') TRY SET PROCEDURE TO (lcExt) ADDITIVE loglin('SET PROCEDURE TO reusit') CATCH TO loErr loglin('SET PROCEDURE TO: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY loglin('--- CAZ3 IN: rutina_2p_ext("valA","valB","valC") ---') TRY lcRes = rutina_2p_ext('valA', 'valB', 'valC') loglin('CAZ3 IN: fara eroare, rezultat=' + lcRes) CATCH TO loErr loglin('CAZ3 IN: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY loglin('--- CAZ4 IN (control, argument in minus): rutina_2p_ext("valA") ---') TRY lcRes = rutina_2p_ext('valA') loglin('CAZ4 IN: fara eroare, rezultat=' + lcRes) CATCH TO loErr loglin('CAZ4 IN: EROARE ' + TRANSFORM(loErr.ErrorNo) + ' : ' + loErr.Message) ENDTRY loglin('') loglin('=== SFARSIT masuratoare ===') QUIT PROCEDURE loglin(tcTxt) STRTOFILE(tcTxt + CHR(13) + CHR(10), lcLog, 1) ENDPROC PROCEDURE rutina_noparam lcDummy = 'fara LPARAMETERS deloc' RETURN PROCEDURE rutina_1p LPARAMETERS p1 RETURN FUNCTION rutina_2p LPARAMETERS p1, p2 lcP2 = IIF(VARTYPE(p2) = 'L' AND ISNULL(p2), 'NULL', IIF(VARTYPE(p2) = 'L', TRANSFORM(p2) + '(bool.F=lipsa)', TRANSFORM(p2))) RETURN '2p LOCAL OK, p1=' + TRANSFORM(p1) + ', p2=' + lcP2 + ', VARTYPE(p2)=' + VARTYPE(p2) + ', PARAMETERS()=' + TRANSFORM(PARAMETERS())