Está en la página 1de 7

Ejemplo: Power builder

boolean lb_regresa = true


if date(em_fecha2.text)<date(em_fecha1.text) then
MessageBox('Error', 'La fecha 1 debe ser menor o igual a la fecha 2')
em_fecha2.text = ''
lb_regresa = false
em_fecha2.setfocus()
elseif em_fecha1.text = '00/00/0000' or em_fecha2.text = '00/00/0000' then
MessageBox('Error', 'No se ha introducido alguna de las fechas')
lb_regresa = false
em_fecha1.setfocus()
else
ss_fecha1 = string(date(em_fecha1.text), 'mm/dd/yyyy')
ss_fecha2 = string(date(em_fecha2.text), 'mm/dd/yyyy')
end if
return lb_regresa
Ejercicio 1 (C)

#include <stdio.h>

int main()
{
FILE *origen, *destino;
char letra;

origen=fopen("origen.txt","r");
destino=fopen("destino.txt","w");
if (origen==NULL || destino==NULL)
{
printf( "Problemas con los ficheros.\n" );
exit( 1 );
}
letra=getc(origen);
while (feof(origen)==0)
{
if (!strchr("AEIOUaeiou",letra))
putc( letra, destino );
letra=getc(origen);
}
if (fclose(origen)!=0)
printf( "Problemas al cerrar el fichero origen.txt\n" );
if (fclose(destino)!=0)
printf( "Problemas al cerrar el fichero destino.txt\n" );
Ejercicio 2 (Pascal)

Program menu;
var seleccion :char;
nombre, dir : string [30];
tel, ciudad : string[10];

begin
Writeln (‘N: Nombre del cliente’);
Writeln (‘D: Dirección’);
Writeln (‘T: Teléfono’);
Writeln (‘C: Ciudad’);
Writeln (‘F: Fin’);
Wrtiteln;
Writeln (‘Elige una opción’);
Readln(seleccion);
Case seleccion of
‘N’, ‘n’ :begin
Write (‘Su nombre es: ‘);
Readln(nombre)
end;
‘D’, ‘d’ :begin
Write (‘Su dirección es: ‘);
Readln(dir)
end;
‘T’, ‘t’ :begin
Write (‘Su teléfono es: ‘);
Readln(tel)
end;
‘C’, ‘c’ :begin
Write (‘Su ciudad es: ‘);
Readln(ciudad)
end;
‘F’, ‘f’ : {no hace nada}
else
wrtiteln(‘La elección no es válida’)
end
End.
Ejercicio 3 (Power Builder)

integer li_clavezona, li_n, li_horario, li_total


boolean lb_salir = false
double ld_lu = 0, ld_mu = 0, ld_miu = 0, ld_ju = 0, ld_vu = 0, ld_su = 0, ld_du = 0
integer li_lr = 0, li_mr = 0, li_mir = 0, li_jr = 0, li_vr = 0, li_sr = 0, li_dr = 0
if sle_zona.text = '' then
MessageBox('Mensaje', 'El campo "Zona" no puede quedar vacío')
sle_zona.setfocus()
else
li_clavezona = integer(em_clavezona.text)
update ZONA set ZONA = :sle_zona.text where CLAVE_ZONA = :li_clavezona;
CHOOSE CASE SQLCA.sqlcode
CASE -1
if SQLCA.sqldbcode = -913 then // Error de deadlock
MessageBox('Mensaje', 'El archivo está bloqueado, espere un momento y vuelva a intentarlo')
else
MessageBox('Error', 'Error actualizando Zona, '+string(SQLCA.sqlerrtext))
end if
Rollback;
CASE 0
// Se actualiza el detalle de cupo de la zona
for li_n = 1 to dw_zonas.rowcount()
li_horario = dw_zonas.GetItemNumber(li_n, 1)
ld_lu = dw_zonas.GetItemNumber(li_n, 3)
li_lr = dw_zonas.GetItemNumber(li_n, 4)
ld_mu = dw_zonas.GetItemNumber(li_n, 5)
li_mr = dw_zonas.GetItemNumber(li_n, 6)
ld_miu = dw_zonas.GetItemNumber(li_n, 7)
li_mir = dw_zonas.GetItemNumber(li_n, 8)
ld_ju = dw_zonas.GetItemNumber(li_n, 9)
li_jr = dw_zonas.GetItemNumber(li_n, 10)
ld_vu = dw_zonas.GetItemNumber(li_n, 11)
li_vr = dw_zonas.GetItemNumber(li_n, 12)
ld_su = dw_zonas.GetItemNumber(li_n, 13)
li_sr = dw_zonas.GetItemNumber(li_n, 14)
ld_du = dw_zonas.GetItemNumber(li_n, 15)
li_dr = dw_zonas.GetItemNumber(li_n, 16)
SELECT count(*) into :li_total FROM ZONA_HORARIO
WHERE CLAVE_ZONA = :li_clavezona AND CLAVE_HORARIO = :li_horario;

if SQLCA.sqlcode = -1 then
MessageBox('Error', 'Error consultando la zona-horario, ' + SQLCA.SQLErrText)
Rollback;
lb_salir = true
exit
elseif isnull(li_total) or li_total = 0 then // Si no existe, se debe insertar
INSERT INTO ZONA_HORARIO
VALUES (:li_clavezona, :li_horario, :ld_lu, :ld_mu, :ld_miu,
:ld_ju, :ld_vu, :ld_su, :ld_du, :li_lr, :li_mr, :li_mir, :li_jr, :li_vr, :li_sr, :li_dr);
if SQLCA.sqlcode = -1 then
if SQLCA.sqldbcode = -913 then // Error de deadlock
MessageBox('Mensaje', 'El archivo está bloqueado, espere y vuelva a intentarlo')
else
MessageBox('Error', 'Error registrando la zona-horario, ' + SQLCA.SQLErrText)
end if
Rollback;
lb_salir = true
exit
end if
else // Siexiste el registro, se actualiza
UPDATE ZONA_HORARIO SET LU_LUNES =:ld_lu, LU_MARTES = :ld_mu,
LU_MIERCOLES =:ld_miu, LU_JUEVES = :ld_ju, LU_VIERNES = :ld_vu,
LU_SABADO = :ld_su, LU_DOMINGO = :ld_du, LR_LUNES = :li_lr, LR_MARTES = :li_mr,
LR_MIERCOLES = :li_mir, LR_JUEVES = :li_jr, LR_VIERNES = :li_vr,
LR_SABADO = :li_sr, LR_DOMINGO = :li_dr
WHERE CLAVE_ZONA = :li_clavezona AND CLAVE_HORARIO = :li_horario;
if SQLCA.sqlcode = -1 then
if SQLCA.sqldbcode = -913 then // Error de deadlock
MessageBox('Mensaje', 'El archivo para bloqueado')
else
MessageBox('Error', 'Error actualizando la zona-horario, ' + SQLCA.SQLErrText)
end if
Rollback;
lb_salir = true
exit
end if
end if
next
if not lb_salir then
Commit;
wf_clear()
end if

END CHOOSE
end if
Ejercicio 4 (Visual Basic)

Sub GenerarEtiq()
Set rs2 = db.OpenRecordset("Definiciones", dbOpenDynaset, False, dbOptimistic)
serie = rs2!serie
SerieAnterior = rs2!serie
rs2.Close
QRY = "SELECT MODULO.IdModulo, Modulo.variedad,Modulo.xn," & _
" variedad.codigo,MODULO.Cosechar, VARIEDAD.Nombre,modulo.impreso" & _
" From Variedad RIGHT JOIN Modulo On Variedad.variedad = " & _
" Modulo.variedad WHERE (MODULO.cosechar >0 AND Impreso=0 ) " &
" ORDER BY idModulo,modulo.variedad"
Set rs = db.OpenRecordset(QRY, dbOpenDynaset, False, dbOptimistic)

If rs.RecordCount = 0 Then
QRY = "Update Definiciones set serie=" & serie
Imprimir = 0
Exit Sub
End If
Imprimir = 1
Set rs1 = db.OpenRecordset("etiquetas", dbOpenDynaset, dbAppendOnly, dbOptimistic)
Set rs2 = db.OpenRecordset("RegistroB", dbOpenDynaset, dbAppendOnly, dbOptimistic)
rs.MoveLast
rs.MoveFirst
Do While Not .EOF
frmCosecha.StatusBar1.Panels(1).Text = "Generando Etiquetas del Modulo " & !idmodulo
rs.Edit
NoEtiq = rs!COSECHAR / 105
For i = 1 To NoEtiq
serie = serie + 1
rs1.AddNew
rs2.AddNew
rs1!serie = serie
rs1!nombre = !nombre
rs1!codigo = !codigo
rs1!modulo = !idmodulo
rs1!semana = SemanaActual
rs1!variedad = !variedad
rs2!serie = serie
rs2!variedad = !variedad
If rs!xn < 1 Then
rs1!xn = 1
Else
rs1!xn = Round(rs!xn)
End If
rs1.Update
rs2.Update

Next
rs!impreso = 1
rs.Update
rs.MoveNext
Loop
rs1.Close
rs.Close
QRY = "Update Definiciones set serie=" & serie
db.Execute QRY
End Sub
Ejercicio 5 (Pascal)
Program calculo;
Var Arg1 :real;
Arg2 :integer;
Resp : char;

function Potencia (X: real; N:integer) :real;


var J:integer;
Producto:real;
begin
If X = 0.0 then
Potencia := 0.0
else
begin
Producto := 1;
for J:= 1 to N do
Producto := Producto * X;
Potencia := Producto
end
end;

begin
repeat
Writeln(‘Introduzca un número real y un entero no negativo’);
Readln(Arg1, Arg2);
Writeln(Arg1 :4 :2, ‘ elevado a ‘, Arg2 :1);
Writeln(‘es ‘, Potencia(Arg1, Arg2):5:2);
Writeln(¿Otra prueba? (S/N)’);
Readln(Resp)
until (Resp = ‘N’) or (Resp = ‘n’)
end.

También podría gustarte