BBJ modernizacion

493 views
Skip to first unread message

BBX Vpro

unread,
Sep 16, 2016, 1:31:04 PM9/16/16
to mund...@googlegroups.com
Buenas tardes colegas.

Hace mucho rato que mi posición con referente a la migracion de vpro5 hacia bbj no la encontraba beneficiosa y demasiado costosa debido a que no conocía el potencial de bbj orientado a los negocios en particular.

Creo que esto me llevo a permanecer en la idea de mantenerme en vpro5 y en el tiempo y de alguna forma desarrollar "parches"  que me permitieran conectar la aplicación hacia el exterior teniendo que pasar por escritorio remoto u otros en la forma de acceso a ella.

Sin embargo gracia a Jose Aguilar he tenido la posibilidad de conocer el mundo de bbj y las grandes posibilidades que ofrece y poniendo en la balanza el costo de bbj y sus licencias en un lado y en el otro los beneficios que este nos da, de este modo se compensa en todo sentido.

Les invito a que puedan involucrarse en la modernización hacia BBJ, creo en mi opinión  bbj es igual a ( VPRO5 + BBJ(SUS COMANDOS) + JAVA y otras cosas por descubrir,  mezclando todo esto se obtiene que nuestra simple aplicación este disponible por la red virtual incluyendo celulares tables etc, en cualquier plataforma que pueda ejecutar java, esto nos amplia la visión de los negocios compensando en todo sentido el costo anteriormente mencionado.

Les invito a que puedan interiorizarse mas en BBJ es lo que hoy, todo programador de vpro5 necesita ya que este suple lo que le faltaba a vpro5  hacia el exterior.

Atentamente
Marcos Pizarro C.
Analista de Sistemas
 

Wilton Villar

unread,
Sep 16, 2016, 1:35:56 PM9/16/16
to mund...@googlegroups.com

Hola !

Muy interesante !

Como se puede ver una demo o un instructivo, asi como los costos de bbj.

Saludos.


--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:00:14 PM9/16/16
to mund...@googlegroups.com
Estimados colegas,

La modernización es relativa, muy bien puedes modernizar tus aplicaciones con pro5.

Aquí les dejo una aplicación desarrollada en pro5 que puedes ejecutar en cualquier plataforma, solo se requiere de un explorador web para su ejecución.


pronto colocare los fuentes para que puedan adaptarlos a sus necesidades.

Saludos Cordiales,
Carlos Mendoza



Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:01:09 PM9/16/16
to mund...@googlegroups.com
ah!... importante colocar como clave la palabra demo ;))

BBX Vpro

unread,
Sep 16, 2016, 4:02:26 PM9/16/16
to mund...@googlegroups.com

Hola eso es P ro5   solamente?

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:11:38 PM9/16/16
to mund...@googlegroups.com
Al igual que cualquier aplicación web, pro5 actúa del lado servidor, del lado cliente debes usar html, ccs, jscript.

BBX Vpro

unread,
Sep 16, 2016, 4:18:06 PM9/16/16
to mund...@googlegroups.com
a eso me referia en el correo inicial   no tener que desarrollar una aplicacion parche para tener conexcion con el exterior.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:18:31 PM9/16/16
to mund...@googlegroups.com
para que tengas una idea mas clara, pro5 viene siendo lo que en otros entornos utilizan LAMP (Linux, Apache, MySQL & PHP).

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:26:18 PM9/16/16
to mund...@googlegroups.com
pensé que te referías a la modernización de tus aplicaciones, en todo caso lo que planteo es la modernización de las aplicaciones bajo un habiente de desarrollo que para mi es hacia donde se encamina todo esto (la web), unos utilizan python, otros PHP, yo con pro5.

Oscar Brenes A.

unread,
Sep 16, 2016, 4:27:39 PM9/16/16
to mund...@googlegroups.com
El ejemplo que Carlos nos dejó es algo que siempre he buscado poder hacer, pero no ni idea de como comenzar. 

Algún momento me encantaria poder hacer aplicaciones asi con pro5 o vpro5.

Para poder hacer mis apliciones Web he tenido que aprender nuevas herramientas con Visual Studio., C# hmtl, CCS etc.

Pero completamente fuera mis aplicaciones bbx.



Cordialmente,

Oscar Brenes A.
Cel: 85213792
Skype: Obrenes.86

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:28:49 PM9/16/16
to mund...@googlegroups.com
si decides por cambiar a Bbj y quieres sacar el máximo potencial de el, igualmente tendrás que desarrollar nuevamente tus aplicaciones.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:36:34 PM9/16/16
to mund...@googlegroups.com
Estimado Oscar.

Es verdad, no es fácil comenzar pero ya he publicado aquí en "MundoBBX" como hacerlo, he dejado los fuentes y todo lo necesario para comenzar, busca: "Como desarrollar aplicaciones Web con pro5" y lo encontraras.

Si comienzas a desarrollar bajo este entorno estaré a la orden para ayudarte a terminare cualquier proyecto que emprendas.

Saludos cordiales,
Carlos Mendoza.

Oscar Brenes A.

unread,
Sep 16, 2016, 4:38:39 PM9/16/16
to mund...@googlegroups.com
Excelente gracias, 

Voy a buscar un poco eso y te aviso.

Gracias por la ayuda. 

BBX Vpro

unread,
Sep 16, 2016, 4:38:42 PM9/16/16
to mund...@googlegroups.com
Quiero hacer una comparativa
   1.-    la metodologia que ocupaba en primera instancia era la siguiente: teniamos una plataforma web desarrollada en .net en la cual haciamos los pedidos y cotizaciones, estos se almacenaban en mysql , en el servidor teniamos un demonio hecho en vpro5 leyendo la mysql y mediante la activacion de un flag mandaba la info a los archivos de datos de vpro5 ,, obiamente esta plataforma puede ser en html c# etc.....

BBX Vpro

unread,
Sep 16, 2016, 4:40:18 PM9/16/16
to mund...@googlegroups.com
2.- con bbj evito la plataforma web ya que el proyecto queda disponible para la web mediante BUI  y la escritura de infromacion es directa a los archivos de datos de vpro5 ya sea diccionario de datos o incluso mysql o archivos mkeyed etc.. 
Y el codigo de vpro5 lo hago reutilizable , solo aprendo bbj y ya esta.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:41:26 PM9/16/16
to mund...@googlegroups.com
Ya entiendo cuando hablas de parches.

BBX Vpro

unread,
Sep 16, 2016, 4:43:37 PM9/16/16
to mund...@googlegroups.com
lamentablemente no tengo una demo en este instante porque estoy en etapa de  desarrollo pero si es mucha mas efectivo . apenas tenga algo les mostrare la gran difrerencia , en el fondo es trabajar directo la aplicacion directa la informacion.
Lo que hace un normal programa de vpro5 .

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:43:53 PM9/16/16
to mund...@googlegroups.com
como veras del lado servidor utilizo pro5, esto quiere decir que no tengo que parchar nada, simplemente escribo en los archivo directamente y ya, igualmente lo puedes hacer con Bbj.

BBX Vpro

unread,
Sep 16, 2016, 4:44:22 PM9/16/16
to mund...@googlegroups.com
mediante la web mediante un celular o tablet etc..

BBX Vpro

unread,
Sep 16, 2016, 4:45:17 PM9/16/16
to mund...@googlegroups.com
si claro pero cuando lo quieres sacar a la web? y cuando usar archivos de datos mkeyed?

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:47:18 PM9/16/16
to mund...@googlegroups.com
El ejemplo que deje puedes ejecutarlo en cualquier plataforma (celular, tablet, etc.), solo se requiere de un explorador web.

prueba ejecutar el link en cualquier celular y te funcionara.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:48:06 PM9/16/16
to mund...@googlegroups.com
y todo esto se almacena en archivos mkeyed, en el servidor donde tengo pro5

BBX Vpro

unread,
Sep 16, 2016, 4:48:35 PM9/16/16
to mund...@googlegroups.com
ok en que esta desarrollado ese ejemplo?

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 4:57:49 PM9/16/16
to mund...@googlegroups.com
aquí te dejo el fuente para que lo analices.

0010 rem 10"ED630.www""6.3A*6""Ficha de Contactos   ""CEMS, Aug, 31/2016
0020 begin ; setesc 9910; seterr 9330; call "^OFSET",1,"ED??",C$,N$,FID0$,OPER
0030 gosub 9010
0100 rem ^100
0110 rem "Verifica por la variable del formulario CONFIG
0120 call "^GETENV.TCP","config",CONFIG$,SINFONIX_ERROR$
0130 if CONFIG$="" then goto 0320
0140 let CONFIG$=ath(CONFIG$,err=0320)
0150 rem 
0160 rem "Determina si el programa regresa
0170 let TEMP=dec(CONFIG$(1,4)),CGI_BIN$=CONFIG$(5,TEMP),CONFIG$=CONFIG$(5+TEM
0170:P)
0180 if CGI_BIN$<>"ED630.www" then goto 0320
0190 rem 
0200 rem "Codigo del registro a actualizar
0210 let TEMP=dec(CONFIG$(1,4)),K0$=CONFIG$(5,TEMP),CONFIG$=CONFIG$(5+TEMP)
0220 goto 5010
0300 rem ^100
0310 rem "Verifica por la variable del Sistema QUERY_STRING
0320 call "^GETENV.TCP","query_string",QUERY_STRING$,SINFONIX_ERROR$
0330 let QUERY_STRING$=QUERY_STRING$+" "
0340 rem 
0350 rem "cgi-bin
0360 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0370 let CGI_BIN$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0380 if CGI_BIN$<>pgm(-1) then goto 0600
0390 rem 
0400 rem "Codigo del Registro a ACTUALIZAR
0410 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0420 let SQL$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0430 rem 
0440 rem "Pagina a CARGAR
0450 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0460 let PAGE$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0470 rem 
0480 rem "Verifica la accion a realizar (Preview | Edit | .. )
0490 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0500 let ACTION$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0510 let ACTION$=cvs(ACTION$,4)
0520 rem 
0600 rem ^100
0610 gosub 8100
0620 if PAGE$="" then let PAGE$="0"; rem "Pagina por DEFAULT
0630 if cvs(ACTION$,4)="PREVIEW" then goto 8410
0700 rem ^100,2
0702 rem "Carga los Datos en Memoria
1000 rem 1000
1010 rem "Despliega el Registro en HTML
1020 let FUNTION=1; goto 1040
1030 let FUNTION=2
1040 call "^LHTML.TCP","ED63"+PAGE$,FUNTION,REMPLACE$,CONFIG_TCP$,ORG_REMPLACE
1040:$
1050 if FUNTION=0 then goto 9910
1060 if REMPLACE$="$KEY$" then let TEMP$=hta(K0$); goto 2330
1070 if REMPLACE$="$SITUACION$" then let TEMP$="53"; call "^TBLH.TCP",TEMP$,"K
1070:=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(1,1)+$00$; goto 2330
1080 if REMPLACE$="$DEFECHA$" then let TEMP=dec(R0$(2,3)); gosub 2510; goto 23
1080:30
1090 if REMPLACE$="$CLASIFICACION$" then let TEMP$="54",Z$=$00$; for Z=0 to 5;
1090: let Z$=Z$+str(dec(R0$(5+Z*2,2)))+$00$; next Z; call "^TBLH.TCP",TEMP$,"K
1090:=01,08,C R=01,30,D ","",0,"","SELECT"+Z$; goto 2330
1100 if REMPLACE$="$TIPO_PERSONA$" then let TEMP$="56"; call "^TBLH.TCP",TEMP$
1100:,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(17,1)+$00$; goto 2330
1110 if REMPLACE$="$NOMBRE$" then let TEMP$=R0$(18,60); goto 2330
1120 if REMPLACE$="$TITULO$" then let TEMP$=R0$(78,60); goto 2330
1130 if REMPLACE$="$RIF$" then let TEMP$=R0$(138,15); goto 2330
1200 rem ^100
1210 rem "Datos de Telefonos
1220 if pos("$TLF_"=REMPLACE$)<>1 then goto 1310
1230 if TLF_NEXT$=CONFIG_TCP$(9,8) then goto 1250
1240 let TLF_NEXT$=CONFIG_TCP$(9,8)
1250 let N=(dec(TLF_NEXT$(7,2))-dec(TLF_NEXT$(5,2)))*21
1260 if REMPLACE$="$TLF_TITULO$" then let TEMP$="66T"; call "^TBLH.TCP",TEMP$,
1260:"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(748+N,1)+$00$; goto 2330
1270 if REMPLACE$="$TLF_DATA$" then let TEMP$=cvs(R0$(749+N,20),3); goto 2330
1280 goto 2320
1300 rem ^100
1310 rem "Datos de eMails & wSite
1320 if pos("$MAIL_"=REMPLACE$)<>1 then goto 1410
1330 if MAIL_NEXT$=CONFIG_TCP$(9,8) then goto 1350
1340 let MAIL_NEXT$=CONFIG_TCP$(9,8)
1350 let N=(dec(MAIL_NEXT$(7,2))-dec(MAIL_NEXT$(5,2)))*61
1360 if REMPLACE$="$MAIL_TITULO$" then let TEMP$="66E"; call "^TBLH.TCP",TEMP$
1360:,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(958+N,1)+$00$; goto 233
1360:0
1370 if REMPLACE$="$MAIL_DATA$" then let TEMP$=cvs(R0$(959+N,60),3); goto 2330
1380 goto 2320
1400 rem ^100
1410 rem "Datos de Direcciones Postales
1420 if pos("$DIR_"=REMPLACE$)<>1 then goto 1610
1430 if DIR_NEXT$=CONFIG_TCP$(9,8) then goto 1450
1440 let DIR_NEXT$=CONFIG_TCP$(9,8)
1450 let N=(dec(DIR_NEXT$(7,2))-dec(DIR_NEXT$(5,2)))*119
1460 if REMPLACE$="$DIR_TITULO$" then let TEMP$="66D"; call "^TBLH.TCP",TEMP$,
1460:"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(153+N,1)+$00$; goto 2330
1470 if REMPLACE$="$DIR_DATA$" then let TEMP$=cvs(R0$(154+N,110),3); goto 2330
1480 if REMPLACE$="$DIR_KEY$" then let TEMP$=hta(cvs(R0$(264+N,8),3)); goto 23
1480:30
1490 if REMPLACE$="$DIR_ZP$" then let Z$=R0$(264+N,8); gosub 2910; goto 2330
1500 goto 2320
1600 rem ^100
1610 rem "Personas de Contacto
1620 if pos("$PER_"=REMPLACE$)<>1 then goto 2010
1700 rem ^100
1710 rem "Telefonos de la Persona de Contacto
1720 if pos("$PER_TLF_"=REMPLACE$)<>1 then goto 1800
1730 if PER_TLF_NEXT$=CONFIG_TCP$(9,8) then goto 1750
1740 let PER_TLF_NEXT$=CONFIG_TCP$(9,8)
1750 let N=(dec(PER_TLF_NEXT$(7,2))-dec(PER_TLF_NEXT$(5,2)))*21
1760 if REMPLACE$="$PER_TLF_TITULO$" then let TEMP$="66T"; call "^TBLH.TCP",TE
1760:MP$,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+PER_R$(748+N,1)+$00$; go
1760:to 2330
1770 if REMPLACE$="$PER_TLF_DATA$" then let TEMP$=cvs(PER_R$(749+N,20),3); got
1770:o 2330
1780 goto 2320
1800 rem ^100
1810 rem "eMail & wPage de la Persona de Contacto
1820 if pos("$PER_MAIL_"=REMPLACE$)<>1 then goto 1900
1830 if PER_MAIL_NEXT$=CONFIG_TCP$(9,8) then goto 1850
1840 let PER_MAIL_NEXT$=CONFIG_TCP$(9,8)
1850 let N=(dec(PER_MAIL_NEXT$(7,2))-dec(PER_MAIL_NEXT$(5,2)))*61
1860 if REMPLACE$="$PER_MAIL_TITULO$" then let TEMP$="66E"; call "^TBLH.TCP",T
1860:EMP$,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+PER_R$(958+N,1)+$00$; g
1860:oto 2330
1870 if REMPLACE$="$PER_MAIL_DATA$" then let TEMP$=cvs(PER_R$(959+N,60),3); go
1870:to 2330
1880 goto 2320
1900 rem ^100
1910 rem "Nombre de la Persona de Contacto
1920 if PER_NEXT$=CONFIG_TCP$(9,8) then goto 1940
1930 let PER_NEXT$=CONFIG_TCP$(9,8)
1940 let N=(dec(PER_NEXT$(7,2))-dec(PER_NEXT$(5,2)))*63
1950 let X$=R0$(1568+N,3); gosub 2810; let PER_K$=X$,PER_R$=Y$
1960 if REMPLACE$="$PER_DATA$" then let TEMP$=cvs(PER_R$(18,60),3); goto 2330
1970 if REMPLACE$="$PER_KEY$" then let TEMP$=hta(R0$(1568+N,3)); goto 2330
1980 if REMPLACE$="$PER_OBS$" then let TEMP$=cvs(R0$(1571+N,60),3); goto 2330
1990 goto 2320
2000 rem ^100
2010 rem "Enpresas Relacionadas
2020 if pos("$EMP_"=REMPLACE$)<>1 then goto 2110
2030 if EMP_NEXT$=CONFIG_TCP$(9,8) then goto 1940
2040 let EMP_NEXT$=CONFIG_TCP$(9,8)
2050 let N=(dec(EMP_NEXT$(7,2))-dec(EMP_NEXT$(5,2)))*63
2060 if REMPLACE$="$EMP_DATA$" then let TEMP$=R0$(2198+N,3); gosub 2810; goto 
2060:2330
2070 if REMPLACE$="$EMP_KEY$" then let TEMP$=hta(R0$(2198+N,3)); goto 2330
2080 if REMPLACE$="$EMP_OBS$" then let TEMP$=cvs(R0$(2201+N,60),3); goto 2330
2090 goto 2320
2100 rem ^100
2110 rem "Datos Adicionales
2120 if REMPLACE$<>"$ADICIONAL?$" then goto 2160
2130 let TEMP$="0"
2140 find record(1,key="82"+bin(100,2)+bin(1,2),dom=2150); let TEMP$="1"
2150 goto 2330
2160 if pos("$REF_"=REMPLACE$)=1 then call "ED110.7.www",0,100,R0$(ADICIONAL),
2160:REMPLACE$,TEMP$,CONFIG_TCP$,""; goto 2330
2200 rem ^100
2210 if REMPLACE$="$IMAGE$" then call "^IMAGE.www",-1,hta(K0$),TEMP$; goto 233
2210:0
2220 if REMPLACE$="$CONFIG$" then gosub 2720; goto 2330
2230 goto 2320
2300 rem ^100
2310 let TEMP$="<% NOT CONVERT %>"+TEMP$; goto 2330
2320 let TEMP$=""
2330 let REMPLACE$=TEMP$
2340 goto 1030
2400 rem ^100
2410 let TEMP=pos(".CHECKED="=REMPLACE$)+9; if TEMP=9 then return 
2420 let TEMP$=REMPLACE$(TEMP,pos("$"=REMPLACE$(TEMP)+"$")-1)
2430 if TEMP$=Z$ then let TEMP$=TEMP$+""" checked """
2440 return 
2500 rem ^100
2510 rem "Calcula la fecha en formato gregoriano
2520 if TEMP=0 then let TEMP=F0
2530 call "^DATE",1,TEMP,0,TEMP$
2540 return 
2600 rem ^100
2610 rem "Da formato a campos numericos
2620 if TEMP then let TEMP$=str(TEMP:TEMP$) else let TEMP$=""
2630 return 
2700 rem ^100
2710 rem "Actualiza la variable del formulario CONFIG
2720 let TEMP$=""
2730 let Z$="ED630.www",TEMP=len(Z$),TEMP$=TEMP$+bin(TEMP,4)+Z$
2740 let TEMP=len(K0$),TEMP$=TEMP$+bin(TEMP,4)+K0$
2750 let TEMP$=hta(TEMP$)
2760 return 
2800 rem ^100
2810 rem "Lee el registro de: Persona de Contacto o Empresa Relacionada
2820 if dec(X$) then read record(3,key=X$,dom=2830)Y$; goto 2850
2830 let Y$=fid(3),Y$=fill(dec(Y$(7,2)),$00$),Y$(1,4)="A"+bin(F0,3),Y$(17,136)
2830:="",Y$(153,119*5)=R66D$,Y$(748,21*10)=R66T$,Y$(958,61*10)=R66E$
2840 let X$=fill(3,$00$)
2850 rem 
2860 let TEMP$=cvs(Y$(18,60),3)
2870 return 
2900 rem ^100
2910 rem "Lee el registro de: Zona Postal  
2920 let Z$="70"+cvs(Z$,2)+"?",TEMP$=""
2930 if len(Z$)>3 then let Z$=Z$(1,len(Z$)-1); find record(FILES+1,dom=2930,ke
2930:y=Z$)ZZ$; let Y$=cvs(ZZ$(1,60),3); if pos(ZZ$(78,1)="E") or pos(cvs(Y$,4)
2930:=cvs(TEMP$,4))=0 then let TEMP$=TEMP$+", "+fnTITLE$(ZZ$) fi; goto 2930
2940 if TEMP$>"" then let TEMP$=TEMP$(3)
2950 return 
5000 rem 5000
5010 rem "Actualiza la Base de Datos
5020 call "^GETENV.TCP","button",BUTTON$,SINFONIX_ERROR$,"UNSPACE"
5030 gosub 8100
5040 rem 
5050 if BUTTON$<>"Acepta" then goto 7810
5100 rem ^100
5110 rem "Valida los Datos del Contacto
5120 rem 
5130 rem "Clasificacion (Clientes, Proveedores, Contactos, Empresas...)
5140 call "^GETENV.TCP","Clasificacion",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5150 let K54$="",TEMP$=TEMP$+$0D0A$
5160 let Z=pos($0D0A$=TEMP$),Z$=TEMP$(1,Z-1),TEMP$=TEMP$(Z+2)
5170 let K54$=K54$+bin(num(ath(Z$)),2)
5180 if TEMP$>"" then goto 5160
5190 if K54$="" then let ERROR$=ERROR$+"Debe Seleccionar al Menos una Clasific
5190:acion<BR>"
5200 if len(K54$)>12 then let ERROR$=ERROR$+"El Maximo de clasificacion es de 
5200:6<BR>"
5210 let W0$(5,12)=K54$+fill(12,$00$)
5220 rem 
5230 rem "Tipo de Persona (1=Natural, 2=Juridica, 3=Entidad Publica)
5240 call "^GETENV.TCP","Tipo_Persona",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5250 let K56$=ath(TEMP$)
5260 if K56$="" then let ERROR$=ERROR$+"Debe Seleccionar el Tipo de Persona<BR
5260:>"
5270 let W0$(17,1)=K56$
5280 let Z$="56"+K56$; gosub 9710; let R56$=Z$
5290 rem 
5300 call "^GETENV.TCP","Nombre",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5310 if TEMP$="" then let ERROR$=ERROR$+"debe indicar el Nombre (o Razon Socia
5310:l) del Contacto (o Entidad)<BR>"
5320 if len(TEMP$)>60 then let ERROR$=ERROR$+"el largo maximo del Nombre del C
5320:ontacto es de 60 caracteres<BR>"
5330 let W0$(18,60)=TEMP$
5340 rem 
5350 call "^GETENV.TCP","Titulo",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5360 if TEMP$="" then let ERROR$=ERROR$+"debe indicar un Titulo y/o Actividad 
5360:que describa al Contacto<BR>"
5370 if len(TEMP$)>60 then let ERROR$=ERROR$+"el largo maximo del Titulo y/o A
5370:ctividad es de 60 caracteres<BR>"
5380 let W0$(78,60)=TEMP$
5390 rem 
5400 call "^GETENV.TCP","RIF",RIF$,SINFONIX_ERROR$,"UNSPACE"
5410 if RIF$="" then goto 5490
5420 let TEMP$=cvs(RIF$,4)
5430 if pos(TEMP$(1,1)=R56$(31,5))=0 then let TEMP$=R56$(31,1)+TEMP$
5440 let PREF$=TEMP$(1,1); gosub 8310; if TEMP=0 then goto 5490
5450 if pos("."=R56$(31,30)) then let F=1000000 else let F=1
5460 let RIF$=PREF$+"-"+cvs(str(-abs(TEMP)/F:cvs(R56$(36,15),3)),3)
5470 let W0$(138,15)=RIF$
5480 goto 5500
5490 let ERROR$=ERROR$+"debe indicar un numero de RIF<BR>"
5500 if len(RIF$)>15 then let ERROR$=ERROR$+"el largo maximo del Numero de RIF
5500: es de 15 Caracteres<BR>"
5600 rem ^100
5610 rem "Numeros Telefonicos
5620 let TLF$=""; for ROWS=1 to 10; let XERROR$=""
5630 rem 
5640 rem "Titulo del Telefono 1=Oficina, 2=Fax, 4=Celular...
5650 call "^GETENV.TCP","TLF_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPACE
5650:"
5660 let TITLE$=ath(TITLE$)
5670 rem 
5680 rem "Numero de Telefono: +58 (0212) 765 43 21
5690 call "^GETENV.TCP","TLF_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
5700 rem 
5710 rem "Status de la Linea: "DELETE"=elimina sino:  "(none)"=no Elimina
5720 call "^GETENV.TCP","TLF_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
5730 rem 
5740 if ST$="DELETE" or DATA$="" then goto 5790
5750 let Z$="66T"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
5750:R$+"Debe Indicar un titulo para el Telefono<BR>"
5760 if len(DATA$)>20 then let XERROR$=XERROR$+"El Largo Maximo para el Telefo
5760:no es de 20 Caracteres<BR>"
5770 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(20)
5780 let TLF$=TLF$+TITLE$(1,1)+DATA$(1,20)
5790 rem 
5800 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (Telefono
5800:s)<BR>"+XERROR$+"<BR>"
5810 let ERROR$=ERROR$+XERROR$
5820 next ROWS
5830 let W0$(748,210)=TLF$+fill(210)
5900 rem ^100
5910 rem "eMail & wSite
5920 let EMAIL$=""; for ROWS=1 to 10; let XERROR$=""
5930 rem 
5940 rem "Titulo del eMail & wSite 1=eMail, 2=WebSite...
5950 call "^GETENV.TCP","MAIL_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPAC
5950:E"
5960 let TITLE$=ath(TITLE$)
5970 rem 
5980 rem "Codigo de eMail o wSite: cor...@gmail.com | www.gmail.com
5990 call "^GETENV.TCP","MAIL_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
6000 rem 
6010 rem "Status de la Linea: "DELETE"=elimina sino:  "(none)"=no Elimina
6020 call "^GETENV.TCP","MAIL_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
6030 rem 
6040 if ST$="DELETE" or DATA$="" then goto 6120
6050 let Z$="66E"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
6050:R$+"Debe Indicar un titulo para el eMail o wSite<BR>"
6060 if len(DATA$)>60 then let XERROR$=XERROR$+"El Largo Maximo para el eMail 
6060:o wSite es de 60 Caracteres<BR>"
6070 let Z=2; if pos("EMAIL"=Z$(31,30)) then let Z=pos("@"=DATA$)
6080 let X=pos("."=DATA$,-1); if X then let X=len(DATA$(1+X))
6090 if Z<2 or X<2 or X>6 then let XERROR$=XERROR$+"el eMail o wSite no es Val
6090:ido<BR>"
6100 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(60)
6110 let EMAIL$=EMAIL$+TITLE$(1,1)+DATA$(1,60)
6120 rem 
6130 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (eMail & 
6130:wSite)<BR>"+XERROR$+"<BR>"
6140 let ERROR$=ERROR$+XERROR$
6150 next ROWS
6160 let W0$(958,610)=EMAIL$+fill(610)
6200 rem ^100
6210 rem "Direcciones Postales
6220 let DIR$=""; for ROWS=1 to 5; let XERROR$=""
6230 rem 
6240 rem "Titulo de la Direccion 1=Oficina, 2=Casa, 4=Habitacion...
6250 call "^GETENV.TCP","DIR_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPACE
6250:"
6260 let TITLE$=ath(TITLE$)
6270 rem 
6280 rem "Direccion: Avenida, Calle, Edificio, Piso, Oficina
6290 call "^GETENV.TCP","DIR_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
6300 rem 
6310 rem "Zona Postal: Urbanizacion, Ciudad, Estado, Pais...
6320 call "^GETENV.TCP","DIR_Key"+str(ROWS),KEY$,SINFONIX_ERROR$,"UNSPACE"
6330 let KEY$=ath(KEY$)
6340 rem 
6350 rem "Status de la Linea: "DELETE"=elimina, "(none)"=NO Elimina
6360 call "^GETENV.TCP","DIR_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
6370 rem 
6380 if ST$="DELETE" or (DATA$="" and KEY$="") then goto 6440
6390 let Z$="66D"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
6390:R$+"Debe Indicar un titulo para la Direccion<BR>"
6400 if DATA$="" then let XERROR$=XERROR$+"Debe Indicar la Avenida, Calle, Edi
6400:ficion...<BR>"
6410 if len(DATA$)>110 then let XERROR$=XERROR$+"El Largo Maximo para la Direc
6410:cion es de 110 Caracteres<BR>"
6420 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(110),KEY$=KEY$+fill(8)
6430 let DIR$=DIR$+TITLE$(1,1)+DATA$(1,110)+KEY$(1,8)
6440 rem 
6450 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (Direccio
6450:nes Postales)<BR>"+XERROR$+"<BR>"
6460 let ERROR$=ERROR$+XERROR$
6470 next ROWS
6480 let W0$(153,595)=DIR$+fill(595)
6500 rem ^100
6510 rem "Personas de Contacto
6520 let ITEM$="PER",ITEM_TITLE$="Personas de Contacto",WRITE=0; gosub 7200
6600 rem ^100
6610 rem "Empresas Relaciondas
6620 let ITEM$="EMP",ITEM_TITLE$="Empresas Relaciondas",WRITE=0; gosub 7200
6700 rem ^100
6710 rem "Valida los Campos Adicionales del CONTACTO
6720 let RECORD$=W0$(ADICIONAL)
6730 call "ED110.7.www",0,100,RECORD$,"WRITE!","","",ERROR$
6740 let W0$(ADICIONAL)=RECORD$
6750 rem 
6760 rem "Valida si coloco una IMAGEN AL PRODUCTO
6770 call "^IMAGE.www",0,hta(K0$),"file_image",ERROR$
6780 rem 
6790 if ERROR$>"" then goto 8410
6800 rem ^100
6810 rem "la informacion registrada en el formulario es VALIDA!
6900 rem ^100
6910 rem "Actualiza las Personas de Contacto
6920 let ITEM$="PER",ITEM_TITLE$="Personas de Contacto",WRITE=1; gosub 7200
6930 let W0$(1568,630)=ITEM_DATA$+fill(630)
7000 rem ^100
7010 rem "Actualiza las Empresas Relaciondas
7020 let ITEM$="EMP",ITEM_TITLE$="Empresas Relaciondas",WRITE=1; gosub 7200
7030 let W0$(2198,630)=ITEM_DATA$+fill(630)
7040 rem 
7050 rem "Actualiza los datos del Contacto
7060 if K0$(1,3)<>$000000$ then goto 7080
7070 extract record(3,key="")Z$; let K0$(1,3)=Z$(29,3),Z$(29,3)=bin(dec($00$+Z
7070:$(29,3))+1,3); write record(3)Z$; find record(3,key=K0$(1,3),dom=7080); g
7070:oto 7070
7080 call "RC110.REC",0,3,K0$(1,3),W0$; write record(3,key=K0$(1,3))W0$
7090 call "^INDS",3,K0$,R0$,W0$,SORT$,PHONETIC$,PHONETIC_TABLE$
7100 rem 
7110 rem "Actualiza si coloco una IMAGEN AL PRODUCTO
7120 call "^IMAGE.www",1,hta(K0$),"file_image",ERROR$
7130 rem 
7140 let MESSAGE$="las modificaciones efectuadas al Contacto "+W0$(18,60)+"<BR
7140:>han sido realizadas"
7150 goto 8510
7200 rem ^100
7210 rem "Personas de Contacto (o Empresas Relacionadas)
7220 let ITEM_DATA$=""; for ROWS=1 to 10; let XERROR$="",ROWS$=""
7230 rem 
7240 rem "Nombre (o Razon Social) del Contacto (o Entidad)
7250 call "^GETENV.TCP",ITEM$+"_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE
7250:"
7260 let ROWS$=ROWS$+crc(DATA$)
7270 rem 
7280 rem "Codigo del Registro Interno (CRI)
7290 call "^GETENV.TCP",ITEM$+"_Key"+str(ROWS),KEY$,SINFONIX_ERROR$,"UNSPACE"
7300 let KEY$=ath(KEY$)
7310 let ROWS$=ROWS$+crc(KEY$)
7320 rem 
7330 rem "Titulo y/o Actividad que Describa al Contacto (o Entidad)
7340 call "^GETENV.TCP",ITEM$+"_Obs"+str(ROWS),OBS$,SINFONIX_ERROR$,"UNSPACE"
7350 let ROWS$=ROWS$+crc(OBS$)
7360 rem 
7370 rem "Status de la Linea: "DELETE"=elimina, "(none)"=NO Elimina
7380 call "^GETENV.TCP",ITEM$+"_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE
7380:"
7390 rem 
7400 if ST$="DELETE" then let ROWS$=""
7410 if DATA$="" then let XERROR$=XERROR$+"Debe Indicar un Nommbre para la "+I
7410:TEM_TITLE$+"<BR>"
7420 if len(DATA$)>60 then let XERROR$=XERROR$+"El Largo Maximo del Nommbre pa
7420:ra la "+ITEM_TITLE$+" se de 60 Caracteres<BR>"
7430 if len(OBS$)>60 then let ERROR$=ERROR$+"el largo maximo del Titulo y/o Ac
7430:tividad es de 60 caracteres<BR>"
7440 rem 
7450 if XERROR$>"" then let XERROR$=XERROR$+"ERROR en la Linea "+str(ROWS)+" (
7450:"+ITEM_TITLE$+")<BR>"+XERROR$
7460 if WRITE=0 then goto 7500
7470 rem 
7480 if pos($00$<>ROWS$) then gosub 7610
7490 rem 
7500 if pos($00$<>ROWS$) then let ERROR$=ERROR$+XERROR$
7510 rem 
7520 let KEY$=KEY$+$000000$
7530 let Z$=KEY$(1,3)+OBS$+fill(63); let ITEM_DATA$=ITEM_DATA$+Z$(1,63)
7540 rem 
7550 next ROWS
7560 return 
7600 rem ^100
7610 rem "Actualiza las Personas de Contactos o Empresas Relacionadas
7620 if dec(KEY$) then extract record(3,dom=7630,key=KEY$)Z0$; goto 7680
7630 let Z0$=fid(3),Z0$=fill(dec(Z0$(7,2)),$00$),Z0$(1,4)="A"+bin(F0,3),Z0$(17
7630:,136)="",Z0$(153,119*5)=R66D$,Z0$(748,21*10)=R66T$,Z0$(958,61*10)=R66E$
7640 let KEY$=fill(3,$00$)
7650 if ITEM$="PER" then let Z=91,Z$="1" else let Z=92,Z$="2"
7660 let Z0$(5,2)=bin(Z,2); rem "Persona de Contacto=91 / Empresa Relacionada=
7660:92
7670 let Z0$(17,1)=Z$; rem      "Persona Natural    = 1 / Persona Juridica   =
7670: 2
7680 let Z1$=Z0$
7690 let Z1$(18,60)=DATA$; rem "Nombre (o Razon Social) del Contacto (o Entida
7690:d)
7700 let Z1$(78,60)=OBS$; rem "Titulo o Actividad del Contacto (o Entidad)
7710 rem 
7720 rem "Actualiza los datos del Contacto
7730 if KEY$(1,3)<>$000000$ then goto 7750
7740 extract record(3,key="")Z$; let KEY$(1,3)=Z$(29,3),Z$(29,3)=bin(dec($00$+
7740:Z$(29,3))+1,3); write record(3)Z$; find record(3,key=KEY$(1,3),dom=7750);
7740: goto 7740
7750 call "RC110.REC",0,3,KEY$(1,3),Z1$; write record(3,key=KEY$(1,3))Z1$
7760 call "^INDS",3,KEY$,Z0$,Z1$,SORT$,PHONETIC$,PHONETIC_TABLE$
7770 return 
7800 rem ^100
7810 rem "Elimina el Registro
7820 if BUTTON$<>"Elimina" then goto 7910
7830 let ERROR$="No esta permitido la Eliminacion de Contactos"
7840 goto 8410
7850 let MESSAGE$="la eliminacion del Contacto "+W0$(18,60)+"<BR>han sido real
7850:izadas"
7860 goto 8510
7900 rem ^100
7910 rem "Nuevo Documento
7920 if BUTTON$<>"Nuevo" then goto 8010
7930 let ERROR$=""
7940 goto 8510
8000 rem ^100
8010 rem "Boton no definido
8020 let ERROR$="no esta definido el valor para la variable: ""button$"""
8030 goto 8410
8100 rem ^100
8110 rem "Lee el registro a actualizar
8120 gosub 8230
8130 call "^NEXT",2,4,"75FICHA"+str(dec(S0$(CLIENTE,1)):"00"),$00$,S0$(2,pos("
8130: "<>S0$(2,8),-1)),0,"",0,dec(S0$(1,1))
8140 if dec(K0$) then extract record(3,dom=8150,key=K0$)R0$; goto 8170
8150 let R0$=fid(3),R0$=fill(dec(R0$(7,2)),$00$),R0$(1,4)="A"+bin(F0,3),R0$(17
8150:,136)="",R0$(153,119*5)=R66D$,R0$(748,21*10)=R66T$,R0$(958,61*10)=R66E$,R
8150:0$(2900,10)=CTRL$
8160 let K0$=fill(3,$00$)
8170 let N0=dec(K0$)
8180 if N0 and BUTTON$<>"Nuevo" then call "^NEXT",3,4,"75FICHA"+str(dec(S0$(CL
8180:IENTE,1)):"00"),$00$,S0$(2,pos(" "<>S0$(2,8),-1)),0,"",N0,dec(S0$(1,1))
8190 let K0$=bin(N0,3)
8200 let W0$=R0$,OLD_K0$=K0$
8210 return 
8220 rem 
8230 rem "Seleccion del Tipo de Registro
8240 let SQL$=ath(SQL$,err=8250)
8250 if K0$="" then let K0$=fill(3,$00$),K0$(1)=SQL$+K0$
8260 return 
8270 rem "8000
8280 rem "Convierte un STRING de Bs. a NUMERICO
8290 let Z$="$(,.)"; goto 8330
8300 rem 
8310 rem "Convierte un STRING en NUMERICO
8320 let Z$=""
8330 let CONVERT_NUM=0,TEMP=pos("."=TEMP$,-1),SIGN=1; if pos("-"=TEMP$) or pos
8330:("("=TEMP$) then let SIGN=-1
8340 let Z=max(pos("0">TEMP$),pos("9"<TEMP$)); if Z then if Z$="" or pos(TEMP$
8340:(Z,1)=Z$) then let CONVERT$=CONVERT$+TEMP$(Z,1),TEMP$=TEMP$(1,Z-1)+TEMP$(
8340:Z+1); if Z<TEMP then let TEMP=TEMP-1 fi; goto 8340
8350 if TEMP then let TEMP$=TEMP$(1,TEMP-1)+"."+TEMP$(TEMP)
8360 let TEMP=num(TEMP$,err=8370)*SIGN,TEMP$=str(TEMP),CONVERT_NUM=1
8370 return 
8400 rem ^100
8410 let MESSAGE$="Error en los datos del formulario, revise los siguientes ca
8410:mpos:"
8420 goto 8560
8500 rem ^100
8510 if BUTTON$="Acepta" then let Z$="top.window.Link.document.forms[0].codigo
8510:.value="""+cvs(W0$(1,8),2)+""";" else let Z$=""
8520 let JAVASCRIPT$="<% NOT CONVERT %>"+Z$+"top.window.Link.location.href=""/
8520:cgi-bin/sinfonix.pl?"" + sii_system + ""%20ED630.www"
8530 call "^GETENV.TCP","PreView",PREVIEW$,SINFONIX_ERROR$,"UNSPACE"
8540 if RETURN$="ON" or (PREVIEW$>"" and PREVIEW$<>"OFF") then let JAVASCRIPT$
8540:=JAVASCRIPT$+"%20"+hta(K0$); if PREVIEW$>"" and PREVIEW$<>"OFF" then let 
8540:JAVASCRIPT$=JAVASCRIPT$+"%20preview"
8550 let JAVASCRIPT$=JAVASCRIPT$+""";"
8560 run "stdio_form"
8570 rem 
9000 rem 9000"DEFINITION SECTION
9010 let M$="-####,###,###.00",SORT$=bin(51,1),PHONETIC$="ED",CLIENTE=32
9020 let TITLE$="          RREG      MMun      pParr     "
9030 rem 
9040 find record(FILES+1,key="EDCTL"+FID0$)I0$; let I0$=I0$+bin(0,1)+bin(2,1)
9050 find record(FILES+3,key="")S0$; let ADICIONAL=3000
9060 rem 
9070 rem "Verifica si usa el sistema RECOLECTOR
9080 let RCFILES=160,RECOLECT$="NO"; call "^OFSET",RCFILES+1,"RC??( 1)"; read 
9080:record(RCFILES+1,key="",err=9100)RCS0$; let RECOLECT$="YES"
9090 let OPER=dec(RCS0$(1,2))*1000+OPER
9100 rem 
9110 let X$="66T",X=21,R66T$=fill(X*10),Z$=R66T$; gosub 9170; let R66T$=Z$
9120 let X$="66E",X=61,R66E$=fill(X*10),Z$=R66E$; gosub 9170; let R66E$=Z$
9130 let X$="66D",X=119,R66D$=fill(X*5),Z$=R66D$; gosub 9170; let R66D$=Z$
9140 let CTRL$=fill(10),F0$=day; call "^DATE",2,num(F0$(1,2)+F0$(4,2)+F0$(7)),
9140:F0,F0$; let F1=F0,CTRL$(1)=FID0$,CTRL$(4)=bin(OPER,2)+bin(F0,3)+bin(int(t
9140:im*100),2)
9150 let Z$=fid(EDFILES+3),XED_R3$=fill(dec(Z$(7,2)),$00$),XED_R3$(1,4)="A"+bi
9150:n(F0,3),XED_R3$(17,136)="",XED_R3$(153,119*5)=R66D$,XED_R3$(748,21*10)=R6
9150:6T$,XED_R3$(958,61*10)=R66E$,XED_R3$(1568,63*20)=fill(63*20,$000000$+fill
9150:(60)),XED_R3$(2900,20)=CTRL$+CTRL$
9160 return 
9170 let Z=1; read record(1,key=X$,dom=9180)
9180 if Z<len(Z$) then let K$=key(1,end=9190); if pos(X$=K$)=1 then read recor
9180:d(1)R$; if pos("DEFAULT"=R$(31)) then let Z$(Z,1)=K$(4,1),Z=Z+X; goto 918
9180:0
9190 return 
9300 rem 9300"ROUTINE PROGRAM
9310 rem 
9320 rem "ERROR I/O FILE
9330 call "^IOERR",err,tcb(5),"ED630.www"; retry
9400 rem 9400"EDIT DISPLAY MASK
9410 call "^MASK",9440; escape
9420 rem "DISPLAY MASK
9430 return 
9440 rem 
9700 rem 9700"READ TABLE
9710 let Z$=cvs(Z$,3); find record(EDFILES+1,key=Z$,dom=9720)Z$; return 
9720 dim Z$(100); return 
9730 def fnSEEK$(KEY$,FILE_ID$)=fnBIT$(KEY$,FILE_ID$,$FF$,len(KEY$))
9740 def fnBIT$(KEY$,FILE_ID$,MOST$,LENGTH)=KEY$(1,LENGTH-1)+chr(max(asc(KEY$(
9740:LENGTH)),1)-1)+MOST$(1,sgn(max(asc(FILE_ID$(2))-LENGTH,0)))
9750 def fnTITLE$(ZZ$)=cvs(cvs(TITLE$(1+max(1,pos(ZZ$(78,1)=TITLE$,10)),9),3)+
9750:" "+ZZ$(1,60),3)
9800 rem 9800"EDIT ERROR
9810 print (0,err=9810)'RB',; return 
9900 rem 9900"END OF PROGRAM
9910 seterr 9920; exit 
9920 release 
9930 if TEMP$>"" then goto 5160

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:01:44 PM9/16/16
to mund...@googlegroups.com
aqui esta el html "principal"

<html>
<head>
 <title>Contactos</title>

<!--sii.load jqm_header -->

 <div data-role="page" id="ED630">

   <div data-role="header" data-position="fixed" data-tap-toggle="false" data-theme="b">
    <a href="#MenuPanel" data-icon="bars" data-iconpos="notext">Menú</a>
    <h1>Contactos</h1>
    <a href="#" data-icon="search" data-iconpos="notext" class="ui-btn-right" title="Busquedas de Contactos" onclick="jQuery('#search_contact_form').toggle();jQuery('#search_contact_input').focus();">Search</a>
    <form id="search_contact_form" style="display:none">
      <input id="search_contact_input" data-type="search" placeholder="Busqueda de Contactos (o Entidades)" data-theme="a">
    </form>
   </div><!-- /header -->


   <div data-role="main" id="single-Main" class="ui-content">

    <ul id="search_contact_id" data-role="listview" data-filter="true" data-inset="true" data-input="#search_contact_input" data-sii-pgm="ED63F.sql 1,editContact" data-theme="a" data-mini="true" ></ul>

   </div><!-- /main -->

   <div id="MenuPanel"   data-role="panel" data-position-fixed="true" data-display="reveal">
    <ul data-role="listview" style="padding-right:10px">
     <li data-icon="back" data-theme="b"><a href="#" data-rel="close">Menú</a></li>
     <li><a href="javascript:editContact('0')" data-transition="flip">Nuevo Contacto</a></li>
     <li><a href="#IN492_RES">Configuracion</a></li>
     <li><a href="#IN492_ACT">Actualización</a></li>
    </ul>
   </div><!-- /panel -->

 </div><!-- page ED630 -->

<!--sii.load jqm_footer -->

</html>

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:02:36 PM9/16/16
to mund...@googlegroups.com
aqui el html "Editar Contacto"

 <div data-role="page" id="ED631">
  <form action="/cgi-bin/sinfonix.pl?$sii.system$%20ED630.www" method="POST" enctype="multipart/form-data" name="myForm" target="connect9">

   <div data-role="header" data-position="fixed" data-tap-toggle="false" data-theme="b">
    <a data-icon="back" data-iconpos="notext" class="ui-btn-left"  title="Volver Atrás" data-rel="back">Config</a>
    <h1><div id="titleContact" class="editContact" style="display:none"></div><div class="editContact">Contactos</div></h1>
    <a data-icon="edit" data-iconpos="notext" class="ui-btn-right" title="Editar Contacto" onclick="toggle_input_disabled();">Help</a>
   </div><!-- /header -->

   <div data-role="main" id="edit-Main" class="ui-content">
    <table border="0" width="100%" cellspacing="0" cellpadding="0">
     <tr>
      <td width="5%" nowrap>
       <a href="javascript:photo('Photo',myForm.Nombre.value);" class="input">
       <img id="Photo" src="$image$" title="Haz Click en la imagen para cambiarla" align="absbottom" border="0" width="67" height="67"></a>&nbsp;</td>
      <td width="95%">
       <fieldset data-role="controlgroup">
        <select size="1" name="Clasificacion" data-mini="true" data-native-menu="false" multiple="multiple" class="input_select">
         <option>$Clasificacion$</option>
        </select>
        <select size="1" name="Tipo_Persona"  data-mini="true" data-native-menu="false">
         <option>$Tipo_Persona$</option>
        </select>
       </fieldset>
      </td>
     </tr>
    </table>
    <input name="Nombre" value="$Nombre$" placeholder="Nombre (o Razon Social) del Contacto (o Entidad)" class="input">
    <input name="Titulo" value="$Titulo$" placeholder="Titulo y/o Actividad que describa al Contacto (o Entidad)" class="input">
    <input name="RIF"    value="$RIF$"    placeholder="Numero de Cedula o RIF" class="input">
    <div data-role="collapsibleset">
     <div data-role="collapsible">
      <h2>Teléfonos</h2>
      <div class="ui-grid-a">
<!--sii.for 10 -->
       <div class="ui-block-a TLF$sii.next$" style="height:32px;width:30%;display:none">
        <select name="TLF_Titulo$sii.next$" size="1" data-mini="true" data-iconpos="none" data-native-menu="false" class="input">
         <option>$TLF_Titulo$</option>
        </select>
       </div>
       <div class="ui-block-b TLF$sii.next$" style="height:32px;width:56%;display:none">
        <input name="TLF_Data$sii.next$" value="$TLF_Data$" placeholder="Numero Telefonico" data-mini="true" type="tel" class="input">
       </div>
       <div class="ui-block-c TLF$sii.next$" style="height:32px;width:14%;display:none">
        <button onclick="DATA_InsDel('TLF','$sii.next$',10);return false" name="TLF_Icon$sii.next$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
        <input name="TLF_Status$sii.next$" value="" type="hidden" class="input">
       </div>
<!--sii.next -->
       <div class="ui-block-a TLF" style="height:15px">
       </div>
      </div><!-- /grid-a -->
     </div>
     <div data-role="collapsible">
      <h2><i>e</i>Mail &amp; <i>w</i>Site</h2>
      <div class="ui-grid-a">
<!--sii.for 10 -->
       <div class="ui-block-a MAIL$sii.next$" style="height:32px;width:30%;display:none">
        <select name="MAIL_Titulo$sii.next$" size="1" data-mini="true" data-iconpos="none" data-native-menu="false">
         <option>$MAIL_Titulo$</option>
        </select>
       </div>
       <div class="ui-block-b MAIL$sii.next$" style="height:32px;width:56%;display:none">
        <input name="MAIL_Data$sii.next$" value="$MAIL_Data$" placeholder="eMail o Pagina Web" data-mini="true" type="email" class="input">
       </div>
       <div class="ui-block-c MAIL$sii.next$" style="height:32px;width:14%;display:none">
        <button onclick="DATA_InsDel('MAIL','$sii.next$',10);return false" name="MAIL_Icon$sii.next$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
        <input name="MAIL_Status$sii.next$" value="" type="hidden" class="input">
       </div>
<!--sii.next -->
       <div class="ui-block-a MAIL" style="height:13px">
       </div>
      </div><!-- /grid-a -->
     </div>
     <div data-role="collapsible">
      <h2>Direcciones Postales</h2>
      <div class="ui-grid-a">
<!--sii.for 5 -->
       <div class="ui-block-a DIR$sii.next$" style="height:32px;width:30%;display:none">
        <select name="DIR_Titulo$sii.next$" size="1" data-mini="true" data-iconpos="none" data-native-menu="false">
         <option>$DIR_Titulo$</option>
        </select>
       </div>
       <div class="ui-block-b DIR$sii.next$" style="px;width:56%;display:none">
        <textarea name="DIR_Data$sii.next$" data-mini="true" placeholder="Avenida, Calle, Edificio..." class="input">$DIR_Data$</textarea>
        <input name="DIR_Key$sii.next$"  value="$DIR_Key$"  type="hidden" id="DIR_ZP$sii.next$_Key" class="input">
       </div>
       <div class="ui-block-c DIR$sii.next$" style="height:32px;width:14%;display:none">
        <button onclick="javascript:DATA_InsDel('DIR','$sii.next$',5);return false" name="DIR_Icon$sii.next$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
        <input name="DIR_Status$sii.next$" value="" type="hidden" class="input">
       </div>
       <div class="ui-block-a DIR$sii.next$" style="height:32px;width:30%;display:none"></div>
       <div class="ui-block-b DIR$sii.next$" style="height:32px;width:56%;display:none;">
        <input id="DIR_ZP$sii.next$" value="$DIR_ZP$" data-mini="true" data-type="search" placeholder="Urbanizacion, Ciudad, Estado, Pais... (Zona Postal)" class="input">
       </div>
       <div class="ui-block-a DIR$sii.next$" style="width:100%;display:none;">
        <ul id="sii_search_ZP$sii.next$" data-role="listview" data-mini="true" data-inset="true" data-filter="true" data-input="#DIR_ZP$sii.next$" data-sii-pgm="ED62Z.sql 70,loadZP"></ul>
        <hr>
       </div>
<!--sii.next -->
      </div><!-- /grid-a -->
     </div>
     <div data-role="collapsible">
      <h2>Personas de Contacto</h2>
      <div class="ui-grid-a">
<!--sii.for 10 -->
       <div class="ui-block-a PER$sii.next$" style="height:32px;width:86%;display:none">
        <input name="PER_Data$sii.next$" value="$PER_Data$" data-mini="true" placeholder="Nombre de la Persona de Contacto" id="PER_Data$sii.next$" data-type="search" class="input">
        <input name="PER_Key$sii.next$"  value="$PER_Key$"  type="hidden" id="PER_Key$sii.next$_key" class="input">
       </div>
       <div class="ui-block-b PER$sii.next$" style="height:25px;width:14%;display:none">
        <button onclick="DATA_InsDel('PER','$sii.next$',10);return false" name="PER_Icon$sii.next$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
        <input name="PER_Status$sii.next$" value="" type="hidden" class="input">
       </div>
       <div class="ui-block-a PER$sii.next$" style="width:100%;display:none">
        <p><ul id="search_contact$sii.next$" data-role="listview" data-mini="true" data-inset="true" data-filter="true" data-input="#PER_Data$sii.next$" data-sii-pgm="ED63F.sql 1,loadContact"></ul></p>
       </div>
       <div class="ui-block-a PER$sii.next$" style="height:45px;width:86%;display:none">
        <input name="PER_Obs$sii.next$" value="$PER_Obs$" data-mini="true" placeholder="Titulo y/o Activida que describa a la Persona de Contacto" class="input">
       </div>
       <div class="ui-block-a PER$sii.next$" style="width:100%;display:none;">
<!--sii.for 3 -->
        <div class="ui-block-a PER_TLF$sii.next_all$" style="height:32px;width:30%;display:none">
         <select name="PER_TLF_Titulo$sii.next_all$" size="1" data-mini="true" data-iconpos="none" data-native-menu="false" class="input">
          <option>$PER_TLF_Titulo$</option>
         </select>
        </div>
        <div class="ui-block-b PER_TLF$sii.next_all$" style="height:32px;width:56%;display:none">
         <input name="PER_TLF_Data$sii.next_all$" value="$PER_TLF_Data$" placeholder="Numero Telefonico" data-mini="true" type="tel" class="input">
        </div>
        <div class="ui-block-c PER_TLF$sii.next_all$" style="height:32px;width:14%;display:none">
         <button onclick="DATA_InsDel('PER_TLF','$sii.next_all$',3);return false" name="PER_TLF_Icon$sii.next_all$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
         <input name="PER_TLF_Status$sii.next_all$" value="" type="hidden" class="input">
        </div>
<!--sii.next -->
<!--sii.for 2 -->
        <div class="ui-block-a PER_MAIL$sii.next_all$" style="height:32px;width:30%;display:none">
         <select name="PER_MAIL_Titulo$sii.next_all$" size="1" data-mini="true" data-iconpos="none" data-native-menu="false" class="input">
          <option>$PER_MAIL_Titulo$</option>
         </select>
        </div>
        <div class="ui-block-b PER_MAIL$sii.next_all$" style="height:32px;width:56%;display:none">
         <input name="PER_MAIL_Data$sii.next_all$" value="$PER_MAIL_Data$" placeholder="eMail o Pagina Web" data-mini="true" type="email" class="input">
        </div>
        <div class="ui-block-c PER_MAIL$sii.next_all$" style="height:32px;width:14%;display:none">
         <button onclick="DATA_InsDel('PER_MAIL','$sii.next_all$',2);return false" name="PER_MAIL_Icon$sii.next_all$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
         <input name="PER_MAIL_Status$sii.next_all$" value="" type="hidden" class="input">
        </div>
<!--sii.next -->
       </div>
       <div class="ui-block-a PER$sii.next$" style="width:100%;display:none;">
        <BR><hr>
       </div>
<!--sii.next -->
      </div><!-- /grid-a -->
     </div>
     <div data-role="collapsible">
      <h2>Empresas Relacionadas</h2>
      <div class="ui-grid-a">
<!--sii.for 10 -->
       <div class="ui-block-a EMP$sii.next$" style="height:32px;width:86%;display:none">
        <input name="EMP_Data$sii.next$" value="$EMP_Data$" data-mini="true" placeholder="Razon Social de la Empresa Relacionada" class="input">
        <input name="EMP_Key$sii.next$"  value="$EMP_Key$"  type="hidden" class="input">
       </div>
       <div class="ui-block-b EMP$sii.next$" style="height:32px;width:14%;display:none">
        <button onclick="DATA_InsDel('PER','$sii.next$',10);return false" name="EMP_Icon$sii.next$" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-notext ui-btn-inline ui-icon-minus input" data-mini="true">icon</button>
        <input name="EMP_Status$sii.next$" value="" type="hidden" class="input">
       </div>
       <div class="ui-block-a EMP$sii.next$" style="height:45px;width:86%;display:none">
        <input name="EMP_Obs$sii.next$" value="$EMP_Obs$" data-mini="true" placeholder="Titulo y/o Activida  que describa a la Empresa Relacionada" class="input">
       </div>
<!--sii.next -->
      </div><!-- /grid-a -->
     </div>
<!--sii.if $Adicional?$ -->
     <div data-role="collapsible">
      <h2>Datos Adicionales</h2>
<!--sii.for 1 -->
       <div class="ui-field-contain">
        <label>$ref_item$</label>
        $ref_data$
       </div>
<!--sii.next -->
     </div>
<!--sii.fi -->
    </div>
   </div><!-- /main -->

   <div id="footer" data-role="footer" data-position="fixed" data-tap-toggle="false" data-theme="b" style="display:none" class="editContact">
    <div data-role="navbar" data-iconpos="right">
     <ul>
      <li><input type="button" data-icon="check"  onclick="submit_ext('Acepta' );return false" data-iconpos="right" value="Guardar" ></li>
      <li><input type="button" data-icon="delete" onclick="submit_ext('Elimina');return false" data-iconpos="right" value="Eliminar" ></li>
<!--  <li><a href="#edit2"     data-icon="check"  onclick="My_Submit('check' )" data-transition="slide">Actualiza</a></li>
      <li><a href="#edit2"     data-icon="delete" onclick="My_Submit('delete')" data-transition="flip" > Elimina </a></li> -->
     </ul>
    </div><!-- /navbar -->
   </div><!-- /footer -->

   <input type="hidden" name="button" value="">
   <input type="hidden" name="config" value="$config$">
  </form>
 </div><!-- page ED631 -->

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:17:04 PM9/16/16
to mund...@googlegroups.com
ah! por cierto, en anteriores publicaciones coloque un sistema de pedidos, tal vez no lo vistes, aquí te lo dejo


como siempre la clave es: "demo"

BBX Vpro

unread,
Sep 16, 2016, 5:19:49 PM9/16/16
to mund...@googlegroups.com
este programa tambien esta codificado de la misma forma que el anterior?

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:30:59 PM9/16/16
to mund...@googlegroups.com
lo que planteo al igual que Bbj es un nuevo entorno de desarrollo pero sin dejar de usar pro5, esto no es ningún parche ya que no podrás usar tus programas que interactuan con el usuario sin antes modificaros para adaptarlo a este nuevo entorno de desarrollo, lo que si podrás reutilizar es aquel código que no interactue con el usuario.

BBX Vpro

unread,
Sep 16, 2016, 5:32:12 PM9/16/16
to mund...@googlegroups.com
si pero escribir todos los programas con codigo html demasiado.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:37:23 PM9/16/16
to mund...@googlegroups.com
Lo que planteo es solo otra alternativa de desarrollo.

Para aquellos que quieran complementar sus sistemas y poder publicarlos en la web.

Como en tu caso que requerías un modulo de pedidos pero en la web.

BBX Vpro

unread,
Sep 16, 2016, 5:42:32 PM9/16/16
to mund...@googlegroups.com
Si de todas maneras es totalmente valido na que decir esta bien hecho , pero a la hora de hacer mantencion de agregar un boton de cambiar algo hacer esto en codigo html si no estas bien preparado en html te tomara mucho tiempo  el cambiar una fuente un color etc o agregar un campo nuevo  ahora bien lo mas probable es que tengas que usar un diseñador externo y luego desde alli copias el codigo html si no me equivoco, yo lo hacia con dreamwever y realmente era tedioso, sin embargo con bbj nada de eso pues ocupas los brc donde diseñaste tu pantalla y los guardas como arc y los levantas como lo haces en vpro5, y listo .

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:45:31 PM9/16/16
to mund...@googlegroups.com
yo utilizo FrontPage para desarrollar la interfaz de usuario.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:47:00 PM9/16/16
to mund...@googlegroups.com
No hay nada mas facil

BBX Vpro

unread,
Sep 16, 2016, 5:48:44 PM9/16/16
to mund...@googlegroups.com
si me imaginaba que era un programa pero es justamente alli a donde apunto, te lo digo yo tenia la misma idea pero cuando comence a trabajar con bbj realmente alli pude apreciar el gran salto por decirlo asi.
Por darte un ejemplo sencillo un programa me esta siendo reutilizable en un 80 porciento en bbj y queda disponible web sin grandes cambios.


Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:52:51 PM9/16/16
to mund...@googlegroups.com
bueno, yo ya reescribí mi sistema para adaptarlo a la web, aquí te dejo un demo.

Carlos E. Mendoza S.

unread,
Sep 16, 2016, 5:53:53 PM9/16/16
to mund...@googlegroups.com
y te puedo decir que básicamente reescribí la interfaz de usuario.

Luis Alfonso Sanchez

unread,
Sep 16, 2016, 6:10:22 PM9/16/16
to mund...@googlegroups.com
Carlos, felicitaciones excelente presentación

Saludos Cordiales 



--------------------------------------------------
Luis Alfonso Sánchez Del Castillo


Fernando Cabrera

unread,
Sep 19, 2016, 12:01:59 PM9/19/16
to mund...@googlegroups.com
Aquí les dejo un enlace a una pagina web (dinámica obviamente) escrita completamente en PRO5. Es sorprendente lo que pueden hacer con un lenguaje de programación. Para comprobar que esta escrita en PRO5 (no VPRO5), pueden colocar el puntero del ratón sobre algún enlace de nombre de un libro y en la parte inferior izquierda les muestra la URL en donde notarán la extensión.



Saludos



F3rn4nd0 C4br3r4 Ru1z
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

Wilton Villar

unread,
Sep 19, 2016, 12:08:11 PM9/19/16
to mund...@googlegroups.com

Hola !!

Wow !!!

Y como habran hecho para hacer esto...???

Alguna idea, tutorial, etc..??

Muy interesante !

Saludos....


--

Fernando Cabrera

unread,
Sep 19, 2016, 12:18:59 PM9/19/16
to mund...@googlegroups.com
Todo fue hecho con cgi, mucho antes de que apareciera publicada la utileria bwu de Basis.

El detalle es solamente utilizar cgi y adecuar los programas a este entorno, por lo demás todo se programa de la forma tradicional.


F3rn4nd0 C4br3r4 Ru1z
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

jose aguilar

unread,
Sep 19, 2016, 12:28:51 PM9/19/16
to MundoBBx
Wilton,

En el siguiente enlace está la documentación de Basis Web Utility (BWU), que podría servirte de referencia para entender el concepto que aplica el sitio que ha mencionado Fernando:

De todos modos, en cualquiera de los casos que se nos proponen, hay un aprendizaje de otras tecnologías que necesariamente debemos hacer. No hay atajos.

Sugeriría que las buenas sugerencias que nos han aportado varios colegas, se acompañen con algún "How To", que ayude a que otros colegas incursionen y prueben. De otro modo, nos quedamos limitados a hacer una "contemplación" del logro de otros, pero aún ajenos a lograrlo en nuestro propio código.

Saludos cordiales,

Administrador MundoBBx

Ronald Veas

unread,
Sep 19, 2016, 2:42:34 PM9/19/16
to mund...@googlegroups.com

Pero eso es cgi y bbx lo tiene de tiempo preteritos, sin desmerecer lo bueno de esto las tecnologías avanzan y bbj solo representa eso un avance de acuerdo a los tiempos.


--

Ivan Vargas

unread,
Sep 19, 2016, 8:02:08 PM9/19/16
to mund...@googlegroups.com
Estimado Carlos:

te agradecemos que haya compartidos tu experiencias entre datos del ambiente Pro5 vs la interacción con página Web.

He revisado detenidamente las líneas de los tres programas que compartiste, pero no logro dimensionar si invoca o no al config.bbx del sistema y como logra levantar o ejecutar una sesión de pro5 desde el ambiente web.

Te agradeceríamos si pudiera darnos una visión de como inter-actúa internamente entre el ambiente pro5 y el ambiente web, aunque sea una pincelada.

Saludos Cordiales.
IVAN VARGAS


Carlos E. Mendoza S.

unread,
Sep 19, 2016, 8:16:02 PM9/19/16
to mund...@googlegroups.com
Estimado Ivan,

Cuando coloque esos archivos mi intención no era que comprendieran como interactua todo esto, sino que comprendieran que estaban hechos con pro5, y que si analizaban un poco (tampoco que lo hicieran detenidamente) pues estos correspondían de alguna manera al resultado mostrado en el explorador web.

Ya estoy re-escribiendo (nuevamente) el tutorial de como desarrollar aplicaciones web con pro5

Tal vez la primera vez no supe explicarlo, espero que esta vez si.

Saludos cordiales,
Carlos Mendoza


Ivan Vargas

unread,
Sep 19, 2016, 8:28:55 PM9/19/16
to mund...@googlegroups.com

T
Carlos,
Te agradezco tu punto de vista y comprensión.

Saludos cordiales.
IVAN VARGAS

Pedro del Valle

unread,
Sep 19, 2016, 8:29:33 PM9/19/16
to mund...@googlegroups.com
Estimado Carlos
Creo que somos muchos los que estamos atentos y esperando poder aprender esta parte desconocida, al menos para mi.

Primero felicitarte por este desarrollo y segundo agradecerte por compartirlo.


saludos

Pedro del Valle
el sabio sabe que ignora (confucio)

Carlos E. Mendoza S.

unread,
Sep 20, 2016, 8:04:01 PM9/20/16
to mund...@googlegroups.com

Ivan Vargas

unread,
Sep 20, 2016, 8:14:34 PM9/20/16
to mund...@googlegroups.com

Estimado Carlos

Se agradece enormemente por compartir tu experiencia.

Saludos cordiales
IVAN VARGAS

Wilton Villar

unread,
Sep 20, 2016, 8:22:18 PM9/20/16
to mund...@googlegroups.com

Hola !

Esto puede ser basado en Vpro5 o solamente con Pro5 ?

Saludos.

Carlos E. Mendoza S.

unread,
Sep 20, 2016, 10:48:28 PM9/20/16
to mund...@googlegroups.com
Hola Wilton

Si es posible instalarlo en window pero no es tan facil como en linux ya que el manejo de los pipe funciona diferente, yo lo instale en window/XP hace 15 años y utilice perl para crear el cgi que interactuaba con pro5, espero que window haya mejorado al respecto.

Saludos.

Wilton Villar

unread,
Sep 20, 2016, 10:52:59 PM9/20/16
to mund...@googlegroups.com

Gracias Carlos.

Lamentablemente no uso Pro5.

Precisamente hace mas de 15 años que trabajo con vpro5...uff

Probare.

Muchas gracias.

shalommen

unread,
Sep 20, 2016, 11:08:49 PM9/20/16
to Wilton Villar, mund...@googlegroups.com
Estimados bbj suple todas estas necesidades 
Por el.momento no puedo poner una demo. Pero si puedo decirles que uonpase por toda estas formas y posibilidades y ninguna de compara a la simplicidad eficiencia de b bj.



Enviado desde mi smartphone Samsung Galaxy.
-------- Mensaje original --------
De: Wilton Villar <wal...@gmail.com>
Fecha: 20/09/2016 23:52 (GMT-03:00)
Asunto: Re: [mundobbx:4076] BBJ modernizacion

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+u...@googlegroups.com.

Carlos E. Mendoza S.

unread,
Sep 21, 2016, 5:31:41 PM9/21/16
to mund...@googlegroups.com
Estimado Wilton

Puedes revisar nuevamente la pagina, ya coloque el script que permite levantar VPro5 desde maquinas con servidores Web en Windows.

Saludos cordiales,

Wilton Villar

unread,
Sep 21, 2016, 5:43:48 PM9/21/16
to mund...@googlegroups.com

En Mundo Bbx ?

Carlos E. Mendoza S.

unread,
Sep 21, 2016, 6:49:56 PM9/21/16
to mund...@googlegroups.com
Estimado Wilton,

Lo que propongo es un conjunto de herramientas donde se involucra principalmente el lenguaje de programación de Basis Internacional (y no es precisamente la ultima versión de este), que interactúan entre si para el desarrollo de aplicaciones web, Debido a que es un tema que implica el uso y conocimiento de herramientas externas consideré prudente aislarlo de lo que tiene que ver con la programación en si del lenguaje Basic.

Para ello he creado un grupo donde el tema principal a debatir es el ya planteado y trillado tema: "Como desarrollar paginas web con pro5 y Visual/Pro5", también es posible con Bbj.

Te invito a que seas el primero en debatir sobre el tema en:


Rafael Berzunza

unread,
Sep 22, 2016, 9:22:54 AM9/22/16
to mund...@googlegroups.com
Carlos,

 Mi respeto y admiración por lo que has creado, considero muy valioso tu aporte ya que hice una prueba y tu programa funciona muy bien incluso en PXBasic y Providex, esto mismo puede replicarse en lenguajes Basic similares o bien en python sin tener que sortear los trucos y trampas que las soluciones POO pueden ofrecer; mantener el estilo simple y básico de la programación a nuestro gusto. Por supuesto que para realizar validaciones en "fresco", se requiere utilizar un poco de JS o PHP pero nada que pueda hacer perder el sueño a un intrépido programador. Las validaciones Postmortem vendrán con mayor complejidad en tu código Basic así como las interacciones de base de datos o Archivos. Mi duda sería con los Grids, si alguien pudiese arrojar un poco de luz sobre cómo controlar una grid con validaciones, sería de agradecer.

Saludos y mis respetos a todos.

Rafael Berzunza

Carlos E. Mendoza S.

unread,
Sep 22, 2016, 11:08:19 AM9/22/16
to mund...@googlegroups.com
Gracias Rafael,

Me complace saber que no solamente funciona con las herramientas de BASIS Internacional, si no también con otras versiones del lenguajes Basic.

Igualmente te invito a que participes en el grupo y hagas tus aportes, y a todos aquellos colegas que de alguna manera consideren poder sacar provecho a esta herramienta.

Pronto continuare con el tema desarrollando desde cero y paso a paso la elaboración de un programa bajo este entorno, donde se involucrara código HTML/CSS/JS y por supuesto el lenguaje Basic.

Saludos cordiales,
Carlos Mendoza.

Fernando Cabrera

unread,
Sep 22, 2016, 11:37:07 AM9/22/16
to mund...@googlegroups.com
Gracias Carlos por este esfuerzo que realizas para apoyar a la comunidad.

Ya envié mi solicitud.

F3rn4nd0 C4br3r4 Ru1z
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

Rafael Berzunza

unread,
Sep 22, 2016, 6:57:36 PM9/22/16
to mund...@googlegroups.com
Tengo una duda: Falta el programa "^OFSET" el cual es llamado varias veces?,


Rafael Berzunza

Carlos E. Mendoza S.

unread,
Sep 22, 2016, 7:31:49 PM9/22/16
to mund...@googlegroups.com
Rafael,

El programa "^OFSET" es una utilidad para abrir conjuntos de archivo y que uso en mis programas, de esa forma desarrollo mis Sistemas, tal vez cada quien use algo similar o muy bien en cada programa pueden abrir los archivos que vallan a utilizar.

También veras en algunos programas la utilidad "^IOERR", esta la uso para atrapar los errores en mis programas.

Como veras no es algo que tiene que ver directamente con el desarrollo de aplicaciones Web.

Sin embargo no tengo problemas en compartir esas y muchos mas programas de utilidad que he desarrollado pero estas están ligados a una lógica de programación y en el fondo no es lo que busco, lo que busco es que cada quien desarrolle sus aplicaciones en función a su lógica y los recursos que disponga y así poder extender sus sistemas hacia la Web.

Te recomiendo que busques en mundo BBX "como desarrollar aplicaciones WEB con pro5", es algo que publicaque anteriormente, allí coloque un zip donde esta la rutina "^IOERR", en este nuevo tutorial no la coloque, ya que estoy tratando de hacer el tema lo mas ameno y simple posible.

Gracias por tu observación.

Saludos cordiales,
Carlos Mendoza.






Fernando Cabrera

unread,
Sep 23, 2016, 2:37:36 PM9/23/16
to mund...@googlegroups.com
Un ejemplo de la modernizacion...



Un equipo Basic-Four BBI, de los 70's corriendo BOSS I y BusinessBasic I

F3rn4nd0 C4br3r4 Ru1z.

Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Ivan Vargas

unread,
Sep 23, 2016, 2:39:36 PM9/23/16
to mund...@googlegroups.com

Jajajajaja
Bien bien
Que nostalgia.

Saludos
IVG

BBX Vpro

unread,
Sep 23, 2016, 3:06:15 PM9/23/16
to mund...@googlegroups.com
Como ha evolucionado basis con sus productos desde esa foto  del ayer hasta el hoy con sus productos bbj. Tremendo .

Imágenes integradas 1

Imágenes integradas 2

Eduardo hernández

unread,
Sep 24, 2016, 8:20:39 PM9/24/16
to mund...@googlegroups.com
Colegas, buenas tardes.
Quiero dar un agradecimiento a Carlos Mendoza por compartir
sus experiencias. Son de mucha utilidad.

Ahora que se tocó el tema, retomé la propuesta de Basis
con el BWU antes de analizar un poco más lo que nos ha compartido
Carlos.

1) Hice la instalación pertinente de Apache en Windows,
2) Copié los archivos correspondientes (stdcgi.exe y stdcgi.bat) a la
carpeta cgi-bin del servidor Apache.
3) Intervine el archivo stdcgi.bat como corresponde para asignar
los valores apropiados a las variables.
4) Creé el correspondiente webconfig.bbx con el contenido que
propone Basis.
5) El archivo de prueba propuesto (webtest.bbx) lo intervine para
crear unos archivos texto que permitieran el rastreo de la ejecución.
6) En el explorador, invoqué la aplicación de la manera que
se indica: localhost/cgi.bin/stdcgi.exe
7) Los archivos de texto que genero (con cierto contenido) se
generan correctamente, indicando que es completo el flujo
de la ejecución.
8) Pero, en el explorador NO muestra nada en la pantalla
y en la pestaña pareciera que se cicla con el 'Conectando'.
9) Además, en el administrador de tareas veo que se quedan activas
las tareas del Vpro5.exe  y el Basic Web Utility.

¿ No sé si alguien pueda darme alguna indicación de por donde
estaría el problema ? Estoy intentando retomar la programación
en Vpro5 dado el atractivo de la interacción web.

Estoy en un equipo con Windows 10, Apache 2.2.16 y
una versión añeja de Vpro5 (1.05).

Gracias de antemano por su apoyo.

Eduardo Hernández

ehc2010

unread,
Sep 26, 2016, 11:59:09 AM9/26/16
to MundoBBx

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 1:28:02 PM9/26/16
to mund...@googlegroups.com
Buenos tardes Eduardo,

Añade las siguientes lineas al programa: "Webtest.bbx":

0006 print "Content-type: text/html"
0007 print ""
0008 print "<pre>"

y cuéntanos que muestra el explorador web.

Saludos


--

Eduardo hernández

unread,
Sep 26, 2016, 1:54:35 PM9/26/16
to mund...@googlegroups.com
Gracias, Carlos.
Añadí las líneas, pero no muestra nada y sigue, aparentemente, ciclado.

Saludos.
--
Eduardo Hernández

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 2:01:29 PM9/26/16
to mund...@googlegroups.com
Añade las siguientes lineas en el archivo .bat, justo antes de invocar el vpro5

echo "Content-type: text/html"
echo ""
echo "<pre>"

Eduardo hernández

unread,
Sep 26, 2016, 2:04:35 PM9/26/16
to mund...@googlegroups.com
Las añadí, pero sigue igual.

El stdcgi.bat quedó:

@echo off

rem This batch file will work under O'Reilly Website's DOS CGI interface.
rem You can make copies under any name you want, and execute it via
rem http://cgi-dos/name.bat.  Each copy can be associated with a BBx
rem program.

rem set BBPROG to be your BBx program, BBEXEC, BBCONFIG, and MEM for
rem BBx startup.


set BBPROG=webtest.bbx
set BBEXEC=c:\basis\vpro5\vpro5.exe
set BBCONFIG=c:\basis\vpro5\WEBconfig.bbx
set MEM=1024
set BBTERM=IO
set USERID=dummy


echo "Content-type: text/html"
echo ""
echo "<pre>"


if "%os%"=="Windows_NT" goto NT:

rem Win 95 - Website uses OUTPUT_FILE

if "%REQUEST_METHOD%"=="POST" goto WIN95CONTENT
%BBEXEC% -m%MEM% %BBPROG% >%OUTPUT_FILE% - doscgi

goto DONE

:WIN95CONTENT
%BBEXEC% -m%MEM% %BBPROG% <%CONTENT_FILE% >%OUTPUT_FILE%
goto DONE

:NT
rem Win NT - Website uses stdout
IF "%REQUEST_METHOD%"=="POST" goto WINNTCONTENT
%BBEXEC% -m%MEM% %BBPROG%
goto DONE

:WINNTCONTENT
%BBEXEC% -m%MEM% %BBPROG% <%CONTENT_FILE%

:DONE

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 2:09:30 PM9/26/16
to mund...@googlegroups.com
Verificaste  si la version de vpro5 que tienes corre sin problemas en window 10

Eduardo hernández

unread,
Sep 26, 2016, 2:12:16 PM9/26/16
to mund...@googlegroups.com
SI, corre perfectamente.
La aplicación que se tiene corre sin ningún problema.
Todo muy bien.

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 3:08:11 PM9/26/16
to mund...@googlegroups.com
En función al lógica del .bat

en vez de colocar: 

echo "Content-type: text/html"
echo ""
echo "<pre>"

debes colocar:

echo "Content-type: text/html" > %OUTPUT_FILE%
echo "" > %OUTPUT_FILE%
echo "<pre>" > %OUTPUT_FILE%
echo "Esto debe aparecer en el explorador"
exit

si lo anterior no se muestra en el explorador es porque el .exe no funciona.



Eduardo hernández

unread,
Sep 26, 2016, 3:20:53 PM9/26/16
to mund...@googlegroups.com
Efectivamente, Carlos, se sigue atorando.
Como dices, el stdcgi.exe no debe funcionar.
Aclaro, el stdcgi.exe y stdcgi.bat que tengo los bajé
del portal de Basis, y yo estoy ejecutando un Vpro5 1.05,
en el cual NO venían las utilerías BWU.

Tal vez me convenga empezar a estudiar las
utilerías que tú, tan amablemente, nos compartiste.

Gracias.

Saludos.

Wilton Villar

unread,
Sep 26, 2016, 3:27:30 PM9/26/16
to mund...@googlegroups.com

Hola !

Una pregunta:

Por que puerto o 'pipe' es la comunicacion entre browser y pro5 o vpro5 ?

Si es por el 'tcp' me parece que la version de vpro5 1.5 no se puede abrir en puerto tcp en el config.

Saludos.

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 3:28:36 PM9/26/16
to mund...@googlegroups.com
prueba los siguiente

modifica el .bat de la siguiente manera:

set OUTPUT_FILE = "&1"
echo "Content-type: text/html" > %OUTPUT_FILE%
echo "" > %OUTPUT_FILE%
echo "<pre>" > %OUTPUT_FILE%

y en la barra de direcciones del explorador coloca: http://localhost/cgi-bin/stdcgi.bat

ahora si debería funcionar el BWU

Eduardo hernández

unread,
Sep 26, 2016, 3:32:11 PM9/26/16
to mund...@googlegroups.com
Ya no se atora,
pero en el explorador me aparece el siguiente mensaje:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, jeh...@gmail.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Carlos E. Mendoza S.

unread,
Sep 26, 2016, 3:35:36 PM9/26/16
to mund...@googlegroups.com
Estimado Wilton,

La conexión no se hace directamente a traves de Visual/Pro5 o Pro5, se hace entre el cliente web y el servidor web, una vez que se establece dicha conexión el servidor web le solicita a pro5 la información y este la prepara y se la entrega al servidor (pro5/vpro5 y servidor web radican en la misma maquina) y el servidor web es quien la envía a traves del protocolo http (port 80) al cliente web.

Saludos.


Carlos E. Mendoza S.

unread,
Sep 26, 2016, 3:50:54 PM9/26/16
to mund...@googlegroups.com
Debo agregar estimado Wilton que si hay métodos de establecer conexiones TCP con Visual/Pro5 & Pro5 versión 1.05, tanto en Window como en Linux, e incluso estas conexiones podemos hacerlas cifradas.

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 3:54:21 PM9/26/16
to mund...@googlegroups.com
Eduardo,

sin modificar nada, prueba con: http://localhost/cgi-bin/stdcgi.exe

Eduardo hernández

unread,
Sep 26, 2016, 3:58:18 PM9/26/16
to mund...@googlegroups.com
Carlos, sigue igual.

Si, como mencionas, pudiera ser el stdcgi.exe el problema,
me convendría estudiar un poco lo tuyo y empezar a trabajar
con tu script en perl.

Wilton Villar

unread,
Sep 26, 2016, 3:59:00 PM9/26/16
to mund...@googlegroups.com

Gracias por tu respuesta Carlos.

Por favor, cuando puedas, concedeme alguna informacion adicional al respecto.

Saludos.

Eduardo hernández

unread,
Sep 26, 2016, 4:21:38 PM9/26/16
to mund...@googlegroups.com
Carlos,
hago la siguiente invocación:

http://localhost/cgi-bin/prueba.sh

donde prueba.sh contiene:

#!C:\Strawberry\perl\bin\perl.exe -w

print "Content-type: text/html\n\n";
print "<center><h1>HOLA MUNDO!</h1></center>\n";
exit(1);


y obtengo lo deseado en el explorador.

Al incluir la invocación del  vpro5:

#!C:\Strawberry\perl\bin\perl.exe -w

print "Content-type: text/html\n\n";
print "<center><h1>HOLA MUNDO!</h1></center>\n";
system ("/basis/vpro5/vpro5.exe -w2048 -cwebconfig.bbx webtest.bbx");
exit(1);


Se me cicla, sin obtener nada (Conectando ...).

¿ Cómo haces la invocación al vpro5 en tu script de perl ?


Carlos E. Mendoza S.

unread,
Sep 26, 2016, 5:26:07 PM9/26/16
to mund...@googlegroups.com
Estimado Eduardo,

Visual/Pro5 no esta diseñado para manejar la comunicación inte-rproceso tal como lo hace la versión de Pro5 para sistemas POSIX (tales como Linux/Unix), esto es una limitación en si del SO de Microsoft.

Es por ello que el stdcgi.exe trata de emular dicha comunicación a través de la creación de unos archivos temporales que se encuentran en las variables:

%CONTENT_FILE% (Contiene la información solicitada por el Cliente WEB a través del Servidor WEB)

y

%OUTPUT_FILE% (Contiene la información solicitada por el Servidor WEB que sera enviar al Cliente WEB)

Lamentablemente el programa que escribí en perl no hace otra cosa mas que emular también dicha comunicación a través de unos archivos temporales y cuando digo en la documentación que escribí al respecto que BASIS implemento muy bien dicho proceso es porque todo lo que acabo de explicar queda detrás del programa stdcgi.exe y el usuario solo trabaja con simples comando de MSDOS en el archivo stdcgi.bat, ademas de que no tienen que instalar el lenguaje perl.

Al programas que planteas le falta colocar los archivos temporales de intercambio a menos que logres conseguir otra manera de hacerlo.

Te recomiendo que investigues en el portal de Soporte de Microsoft para ver si las nuevas versiones de su sistema operativo pueden manejar la comunicación inter-procesos mas apegadas al estándar POSIX.

Ahora si lo que desea es comenzar a desarrollar desde ya tus aplicaciones web, pues te recomiendo que uses la versión que propongo sin mayores cambios.

Saludos cordiales,
Carlos Mendoza

Eduardo hernández

unread,
Sep 26, 2016, 5:31:24 PM9/26/16
to mund...@googlegroups.com
Perfecto, Carlos, gracias por el apoyo.
Lo que haré es empezar a trabajar con esta filosofía
y estudiar tu propuesta.
Nuevamente, agradezco tu apoyo y tus aportaciones al grupo.

Saludos.

Rafael Berzunza

unread,
Sep 26, 2016, 6:04:22 PM9/26/16
to mund...@googlegroups.com
Carlos,

 Un poco fuera del tópico que estas tratando, quisiera saber cuantas licencias debe uno considerar para cubrir un acceso via web ya que así como pueden ser 5 personas accediendo a vpro5.exe podrían ser 50...

Gracias de antemano.

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 6:08:12 PM9/26/16
to mund...@googlegroups.com
Te deseo suerte en tus desarrollos y te invito a que participes en el grupo que se ha creado a tal fin, para tratar el tema de:

Como crear aplicaciones WEB con Business Basic

y para todos aquellos colegas y publico en general, que también este interesados a comenzar a desarrollar bajo este nuevo ambiente los invito a que participen en este nuevo grupo en:
Saludos cordiales,
Carlos E. Mendoza S.

Carlos E. Mendoza S.

unread,
Sep 26, 2016, 6:26:12 PM9/26/16
to mund...@googlegroups.com
Hola Rafael, Saludos.

Muy interesante tu pregunta pero no soy la persona indicada que podría responder a tu inquietud, espero que los partner de BASIS que participan en el grupo nos puedan contestar esa pregunta.

Solo puedo mencionar que hace 15 años instale la version DEMO de Visual / Pro5 1.05 bajo el ambiente web y pude atender de manera concurrente a mas de 16 usuarios (con una versión DEMO!!).


Saludos cordiales,
Carlos E. Mendoza S.

PD:
Espero que esto no sea un tema de conflicto sino mas bien de debate.

Eduardo hernández

unread,
Sep 27, 2016, 1:20:05 PM9/27/16
to mund...@googlegroups.com
Carlos, buenas tardes.

1) Empecé a trabajar con tu tutorial y todo va bien (dejé
por la paz mis intentos con el BWU).
2) En el script bb.sh para Windows, hice algunos cambios
(por mi conveniencia) al manejo de los archivos temporales.
Sólo hago notar que incluí el parámetro -tIO en la invocación del
Vpro5.exe.
3) Estoy trabajando con tus dos tutoriales de clientes. Aún no me
echo un clavado a analizar tus rutinas (^LHTML.TCP y ^GETENV.TCP).
Al registrar datos (en ambos casos) me sale el mensaje




Tengo que analizar tus rutinas, pero ¿ crees que por ahí me haga
falta algo ?

Te reitero mis felicitaciones por tan extraordinario aporte.

Saludos.

Eduardo Hernández

Carlos E. Mendoza S.

unread,
Sep 27, 2016, 10:47:29 PM9/27/16
to mund...@googlegroups.com
Uno de los primeros prototipo de MAI que llego a Venezuela, apenas se logra ver la consola.



Adivinen quien es el personaje ;))​

El 23 de septiembre de 2016, 15:06, BBX Vpro <shal...@gmail.com> escribió:
Como ha evolucionado basis con sus productos desde esa foto  del ayer hasta el hoy con sus productos bbj. Tremendo .

Imágenes integradas 1

Imágenes integradas 2





El 23 de septiembre de 2016, 15:39, Ivan Vargas <vn....@gmail.com> escribió:

Jajajajaja
Bien bien
Que nostalgia.

Saludos
IVG


El 23/09/2016 15:37, "Fernando Cabrera" <cabreraf...@gmail.com> escribió:
Un ejemplo de la modernizacion...



Un equipo Basic-Four BBI, de los 70's corriendo BOSS I y BusinessBasic I

F3rn4nd0 C4br3r4 Ru1z.
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

El 22 de septiembre de 2016, 10:37, Fernando Cabrera <cabreraf...@gmail.com> escribió:
Gracias Carlos por este esfuerzo que realizas para apoyar a la comunidad.

Ya envié mi solicitud.

F3rn4nd0 C4br3r4 Ru1z
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

El 22 de septiembre de 2016, 10:08, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
Gracias Rafael,

Me complace saber que no solamente funciona con las herramientas de BASIS Internacional, si no también con otras versiones del lenguajes Basic.

Igualmente te invito a que participes en el grupo y hagas tus aportes, y a todos aquellos colegas que de alguna manera consideren poder sacar provecho a esta herramienta.

Pronto continuare con el tema desarrollando desde cero y paso a paso la elaboración de un programa bajo este entorno, donde se involucrara código HTML/CSS/JS y por supuesto el lenguaje Basic.

Saludos cordiales,
Carlos Mendoza.

El 22 de septiembre de 2016, 9:22, Rafael Berzunza <rafael....@gmail.com> escribió:
Carlos,

 Mi respeto y admiración por lo que has creado, considero muy valioso tu aporte ya que hice una prueba y tu programa funciona muy bien incluso en PXBasic y Providex, esto mismo puede replicarse en lenguajes Basic similares o bien en python sin tener que sortear los trucos y trampas que las soluciones POO pueden ofrecer; mantener el estilo simple y básico de la programación a nuestro gusto. Por supuesto que para realizar validaciones en "fresco", se requiere utilizar un poco de JS o PHP pero nada que pueda hacer perder el sueño a un intrépido programador. Las validaciones Postmortem vendrán con mayor complejidad en tu código Basic así como las interacciones de base de datos o Archivos. Mi duda sería con los Grids, si alguien pudiese arrojar un poco de luz sobre cómo controlar una grid con validaciones, sería de agradecer.

Saludos y mis respetos a todos.

Rafael Berzunza

El 21 de septiembre de 2016, 17:49, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
Estimado Wilton,

Lo que propongo es un conjunto de herramientas donde se involucra principalmente el lenguaje de programación de Basis Internacional (y no es precisamente la ultima versión de este), que interactúan entre si para el desarrollo de aplicaciones web, Debido a que es un tema que implica el uso y conocimiento de herramientas externas consideré prudente aislarlo de lo que tiene que ver con la programación en si del lenguaje Basic.

Para ello he creado un grupo donde el tema principal a debatir es el ya planteado y trillado tema: "Como desarrollar paginas web con pro5 y Visual/Pro5", también es posible con Bbj.

Te invito a que seas el primero en debatir sobre el tema en:

El 21 de septiembre de 2016, 17:43, Wilton Villar <wal...@gmail.com> escribió:

En Mundo Bbx ?


El 21 sept. 2016 5:31 PM, "Carlos E. Mendoza S." <inge...@gmail.com> escribió:
Estimado Wilton

Puedes revisar nuevamente la pagina, ya coloque el script que permite levantar VPro5 desde maquinas con servidores Web en Windows.

Saludos cordiales,


El 20 de septiembre de 2016, 23:08, shalommen <shal...@gmail.com> escribió:
Estimados bbj suple todas estas necesidades 
Por el.momento no puedo poner una demo. Pero si puedo decirles que uonpase por toda estas formas y posibilidades y ninguna de compara a la simplicidad eficiencia de b bj.



Enviado desde mi smartphone Samsung Galaxy.
-------- Mensaje original --------
De: Wilton Villar <wal...@gmail.com>
Fecha: 20/09/2016 23:52 (GMT-03:00)
Asunto: Re: [mundobbx:4076] BBJ modernizacion

Gracias Carlos.

Lamentablemente no uso Pro5.

Precisamente hace mas de 15 años que trabajo con vpro5...uff

Probare.

Muchas gracias.


El 20 sept. 2016 10:48 PM, "Carlos E. Mendoza S." <inge...@gmail.com> escribió:
Hola Wilton

Si es posible instalarlo en window pero no es tan facil como en linux ya que el manejo de los pipe funciona diferente, yo lo instale en window/XP hace 15 años y utilice perl para crear el cgi que interactuaba con pro5, espero que window haya mejorado al respecto.

Saludos.


2016-09-20 19:52 GMT-04:30 Wilton Villar <wal...@gmail.com>:

Hola !

Esto puede ser basado en Vpro5 o solamente con Pro5 ?

Saludos.


El 20 sept. 2016 8:14 PM, "Ivan Vargas" <vn....@gmail.com> escribió:

Estimado Carlos

Se agradece enormemente por compartir tu experiencia.

Saludos cordiales
IVAN VARGAS


El 20/09/2016 21:04, "Carlos E. Mendoza S." <inge...@gmail.com> escribió:

El 19 de septiembre de 2016, 20:29, Pedro del Valle <pvj...@gmail.com> escribió:
Estimado Carlos
Creo que somos muchos los que estamos atentos y esperando poder aprender esta parte desconocida, al menos para mi.

Primero felicitarte por este desarrollo y segundo agradecerte por compartirlo.


saludos


El 19 de septiembre de 2016, 21:15, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
Estimado Ivan,

Cuando coloque esos archivos mi intención no era que comprendieran como interactua todo esto, sino que comprendieran que estaban hechos con pro5, y que si analizaban un poco (tampoco que lo hicieran detenidamente) pues estos correspondían de alguna manera al resultado mostrado en el explorador web.

Ya estoy re-escribiendo (nuevamente) el tutorial de como desarrollar aplicaciones web con pro5

Tal vez la primera vez no supe explicarlo, espero que esta vez si.

Saludos cordiales,
Carlos Mendoza



2016-09-19 20:02 GMT-04:00 Ivan Vargas <vn....@gmail.com>:
Estimado Carlos:

te agradecemos que haya compartidos tu experiencias entre datos del ambiente Pro5 vs la interacción con página Web.

He revisado detenidamente las líneas de los tres programas que compartiste, pero no logro dimensionar si invoca o no al config.bbx del sistema y como logra levantar o ejecutar una sesión de pro5 desde el ambiente web.

Te agradeceríamos si pudiera darnos una visión de como inter-actúa internamente entre el ambiente pro5 y el ambiente web, aunque sea una pincelada.

Saludos Cordiales.
IVAN VARGAS



2016-09-16 16:57 GMT-04:00 Carlos E. Mendoza S. <inge...@gmail.com>:
aquí te dejo el fuente para que lo analices.

0010 rem 10"ED630.www""6.3A*6""Ficha de Contactos   ""CEMS, Aug, 31/2016
0020 begin ; setesc 9910; seterr 9330; call "^OFSET",1,"ED??",C$,N$,FID0$,OPER
0030 gosub 9010
0100 rem ^100
0110 rem "Verifica por la variable del formulario CONFIG
0120 call "^GETENV.TCP","config",CONFIG$,SINFONIX_ERROR$
0130 if CONFIG$="" then goto 0320
0140 let CONFIG$=ath(CONFIG$,err=0320)
0150 rem 
0160 rem "Determina si el programa regresa
0170 let TEMP=dec(CONFIG$(1,4)),CGI_BIN$=CONFIG$(5,TEMP),CONFIG$=CONFIG$(5+TEM
0170:P)
0180 if CGI_BIN$<>"ED630.www" then goto 0320
0190 rem 
0200 rem "Codigo del registro a actualizar
0210 let TEMP=dec(CONFIG$(1,4)),K0$=CONFIG$(5,TEMP),CONFIG$=CONFIG$(5+TEMP)
0220 goto 5010
0300 rem ^100
0310 rem "Verifica por la variable del Sistema QUERY_STRING
0320 call "^GETENV.TCP","query_string",QUERY_STRING$,SINFONIX_ERROR$
0330 let QUERY_STRING$=QUERY_STRING$+" "
0340 rem 
0350 rem "cgi-bin
0360 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0370 let CGI_BIN$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0380 if CGI_BIN$<>pgm(-1) then goto 0600
0390 rem 
0400 rem "Codigo del Registro a ACTUALIZAR
0410 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0420 let SQL$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0430 rem 
0440 rem "Pagina a CARGAR
0450 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0460 let PAGE$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0470 rem 
0480 rem "Verifica la accion a realizar (Preview | Edit | .. )
0490 let TEMP=pos(" "=QUERY_STRING$); if TEMP=0 then goto 0600
0500 let ACTION$=QUERY_STRING$(1,TEMP-1),QUERY_STRING$=QUERY_STRING$(TEMP+1)
0510 let ACTION$=cvs(ACTION$,4)
0520 rem 
0600 rem ^100
0610 gosub 8100
0620 if PAGE$="" then let PAGE$="0"; rem "Pagina por DEFAULT
0630 if cvs(ACTION$,4)="PREVIEW" then goto 8410
0700 rem ^100,2
0702 rem "Carga los Datos en Memoria
1000 rem 1000
1010 rem "Despliega el Registro en HTML
1020 let FUNTION=1; goto 1040
1030 let FUNTION=2
1040 call "^LHTML.TCP","ED63"+PAGE$,FUNTION,REMPLACE$,CONFIG_TCP$,ORG_REMPLACE
1040:$
1050 if FUNTION=0 then goto 9910
1060 if REMPLACE$="$KEY$" then let TEMP$=hta(K0$); goto 2330
1070 if REMPLACE$="$SITUACION$" then let TEMP$="53"; call "^TBLH.TCP",TEMP$,"K
1070:=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(1,1)+$00$; goto 2330
1080 if REMPLACE$="$DEFECHA$" then let TEMP=dec(R0$(2,3)); gosub 2510; goto 23
1080:30
1090 if REMPLACE$="$CLASIFICACION$" then let TEMP$="54",Z$=$00$; for Z=0 to 5;
1090: let Z$=Z$+str(dec(R0$(5+Z*2,2)))+$00$; next Z; call "^TBLH.TCP",TEMP$,"K
1090:=01,08,C R=01,30,D ","",0,"","SELECT"+Z$; goto 2330
1100 if REMPLACE$="$TIPO_PERSONA$" then let TEMP$="56"; call "^TBLH.TCP",TEMP$
1100:,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(17,1)+$00$; goto 2330
1110 if REMPLACE$="$NOMBRE$" then let TEMP$=R0$(18,60); goto 2330
1120 if REMPLACE$="$TITULO$" then let TEMP$=R0$(78,60); goto 2330
1130 if REMPLACE$="$RIF$" then let TEMP$=R0$(138,15); goto 2330
1200 rem ^100
1210 rem "Datos de Telefonos
1220 if pos("$TLF_"=REMPLACE$)<>1 then goto 1310
1230 if TLF_NEXT$=CONFIG_TCP$(9,8) then goto 1250
1240 let TLF_NEXT$=CONFIG_TCP$(9,8)
1250 let N=(dec(TLF_NEXT$(7,2))-dec(TLF_NEXT$(5,2)))*21
1260 if REMPLACE$="$TLF_TITULO$" then let TEMP$="66T"; call "^TBLH.TCP",TEMP$,
1260:"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(748+N,1)+$00$; goto 2330
1270 if REMPLACE$="$TLF_DATA$" then let TEMP$=cvs(R0$(749+N,20),3); goto 2330
1280 goto 2320
1300 rem ^100
1310 rem "Datos de eMails & wSite
1320 if pos("$MAIL_"=REMPLACE$)<>1 then goto 1410
1330 if MAIL_NEXT$=CONFIG_TCP$(9,8) then goto 1350
1340 let MAIL_NEXT$=CONFIG_TCP$(9,8)
1350 let N=(dec(MAIL_NEXT$(7,2))-dec(MAIL_NEXT$(5,2)))*61
1360 if REMPLACE$="$MAIL_TITULO$" then let TEMP$="66E"; call "^TBLH.TCP",TEMP$
1360:,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(958+N,1)+$00$; goto 233
1360:0
1370 if REMPLACE$="$MAIL_DATA$" then let TEMP$=cvs(R0$(959+N,60),3); goto 2330
1380 goto 2320
1400 rem ^100
1410 rem "Datos de Direcciones Postales
1420 if pos("$DIR_"=REMPLACE$)<>1 then goto 1610
1430 if DIR_NEXT$=CONFIG_TCP$(9,8) then goto 1450
1440 let DIR_NEXT$=CONFIG_TCP$(9,8)
1450 let N=(dec(DIR_NEXT$(7,2))-dec(DIR_NEXT$(5,2)))*119
1460 if REMPLACE$="$DIR_TITULO$" then let TEMP$="66D"; call "^TBLH.TCP",TEMP$,
1460:"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+R0$(153+N,1)+$00$; goto 2330
1470 if REMPLACE$="$DIR_DATA$" then let TEMP$=cvs(R0$(154+N,110),3); goto 2330
1480 if REMPLACE$="$DIR_KEY$" then let TEMP$=hta(cvs(R0$(264+N,8),3)); goto 23
1480:30
1490 if REMPLACE$="$DIR_ZP$" then let Z$=R0$(264+N,8); gosub 2910; goto 2330
1500 goto 2320
1600 rem ^100
1610 rem "Personas de Contacto
1620 if pos("$PER_"=REMPLACE$)<>1 then goto 2010
1700 rem ^100
1710 rem "Telefonos de la Persona de Contacto
1720 if pos("$PER_TLF_"=REMPLACE$)<>1 then goto 1800
1730 if PER_TLF_NEXT$=CONFIG_TCP$(9,8) then goto 1750
1740 let PER_TLF_NEXT$=CONFIG_TCP$(9,8)
1750 let N=(dec(PER_TLF_NEXT$(7,2))-dec(PER_TLF_NEXT$(5,2)))*21
1760 if REMPLACE$="$PER_TLF_TITULO$" then let TEMP$="66T"; call "^TBLH.TCP",TE
1760:MP$,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+PER_R$(748+N,1)+$00$; go
1760:to 2330
1770 if REMPLACE$="$PER_TLF_DATA$" then let TEMP$=cvs(PER_R$(749+N,20),3); got
1770:o 2330
1780 goto 2320
1800 rem ^100
1810 rem "eMail & wPage de la Persona de Contacto
1820 if pos("$PER_MAIL_"=REMPLACE$)<>1 then goto 1900
1830 if PER_MAIL_NEXT$=CONFIG_TCP$(9,8) then goto 1850
1840 let PER_MAIL_NEXT$=CONFIG_TCP$(9,8)
1850 let N=(dec(PER_MAIL_NEXT$(7,2))-dec(PER_MAIL_NEXT$(5,2)))*61
1860 if REMPLACE$="$PER_MAIL_TITULO$" then let TEMP$="66E"; call "^TBLH.TCP",T
1860:EMP$,"K=01,01,C R=01,30,D ","",0,"","SELECT"+$00$+PER_R$(958+N,1)+$00$; g
1860:oto 2330
1870 if REMPLACE$="$PER_MAIL_DATA$" then let TEMP$=cvs(PER_R$(959+N,60),3); go
1870:to 2330
1880 goto 2320
1900 rem ^100
1910 rem "Nombre de la Persona de Contacto
1920 if PER_NEXT$=CONFIG_TCP$(9,8) then goto 1940
1930 let PER_NEXT$=CONFIG_TCP$(9,8)
1940 let N=(dec(PER_NEXT$(7,2))-dec(PER_NEXT$(5,2)))*63
1950 let X$=R0$(1568+N,3); gosub 2810; let PER_K$=X$,PER_R$=Y$
1960 if REMPLACE$="$PER_DATA$" then let TEMP$=cvs(PER_R$(18,60),3); goto 2330
1970 if REMPLACE$="$PER_KEY$" then let TEMP$=hta(R0$(1568+N,3)); goto 2330
1980 if REMPLACE$="$PER_OBS$" then let TEMP$=cvs(R0$(1571+N,60),3); goto 2330
1990 goto 2320
2000 rem ^100
2010 rem "Enpresas Relacionadas
2020 if pos("$EMP_"=REMPLACE$)<>1 then goto 2110
2030 if EMP_NEXT$=CONFIG_TCP$(9,8) then goto 1940
2040 let EMP_NEXT$=CONFIG_TCP$(9,8)
2050 let N=(dec(EMP_NEXT$(7,2))-dec(EMP_NEXT$(5,2)))*63
2060 if REMPLACE$="$EMP_DATA$" then let TEMP$=R0$(2198+N,3); gosub 2810; goto 
2060:2330
2070 if REMPLACE$="$EMP_KEY$" then let TEMP$=hta(R0$(2198+N,3)); goto 2330
2080 if REMPLACE$="$EMP_OBS$" then let TEMP$=cvs(R0$(2201+N,60),3); goto 2330
2090 goto 2320
2100 rem ^100
2110 rem "Datos Adicionales
2120 if REMPLACE$<>"$ADICIONAL?$" then goto 2160
2130 let TEMP$="0"
2140 find record(1,key="82"+bin(100,2)+bin(1,2),dom=2150); let TEMP$="1"
2150 goto 2330
2160 if pos("$REF_"=REMPLACE$)=1 then call "ED110.7.www",0,100,R0$(ADICIONAL),
2160:REMPLACE$,TEMP$,CONFIG_TCP$,""; goto 2330
2200 rem ^100
2210 if REMPLACE$="$IMAGE$" then call "^IMAGE.www",-1,hta(K0$),TEMP$; goto 233
2210:0
2220 if REMPLACE$="$CONFIG$" then gosub 2720; goto 2330
2230 goto 2320
2300 rem ^100
2310 let TEMP$="<% NOT CONVERT %>"+TEMP$; goto 2330
2320 let TEMP$=""
2330 let REMPLACE$=TEMP$
2340 goto 1030
2400 rem ^100
2410 let TEMP=pos(".CHECKED="=REMPLACE$)+9; if TEMP=9 then return 
2420 let TEMP$=REMPLACE$(TEMP,pos("$"=REMPLACE$(TEMP)+"$")-1)
2430 if TEMP$=Z$ then let TEMP$=TEMP$+""" checked """
2440 return 
2500 rem ^100
2510 rem "Calcula la fecha en formato gregoriano
2520 if TEMP=0 then let TEMP=F0
2530 call "^DATE",1,TEMP,0,TEMP$
2540 return 
2600 rem ^100
2610 rem "Da formato a campos numericos
2620 if TEMP then let TEMP$=str(TEMP:TEMP$) else let TEMP$=""
2630 return 
2700 rem ^100
2710 rem "Actualiza la variable del formulario CONFIG
2720 let TEMP$=""
2730 let Z$="ED630.www",TEMP=len(Z$),TEMP$=TEMP$+bin(TEMP,4)+Z$
2740 let TEMP=len(K0$),TEMP$=TEMP$+bin(TEMP,4)+K0$
2750 let TEMP$=hta(TEMP$)
2760 return 
2800 rem ^100
2810 rem "Lee el registro de: Persona de Contacto o Empresa Relacionada
2820 if dec(X$) then read record(3,key=X$,dom=2830)Y$; goto 2850
2830 let Y$=fid(3),Y$=fill(dec(Y$(7,2)),$00$),Y$(1,4)="A"+bin(F0,3),Y$(17,136)
2830:="",Y$(153,119*5)=R66D$,Y$(748,21*10)=R66T$,Y$(958,61*10)=R66E$
2840 let X$=fill(3,$00$)
2850 rem 
2860 let TEMP$=cvs(Y$(18,60),3)
2870 return 
2900 rem ^100
2910 rem "Lee el registro de: Zona Postal  
2920 let Z$="70"+cvs(Z$,2)+"?",TEMP$=""
2930 if len(Z$)>3 then let Z$=Z$(1,len(Z$)-1); find record(FILES+1,dom=2930,ke
2930:y=Z$)ZZ$; let Y$=cvs(ZZ$(1,60),3); if pos(ZZ$(78,1)="E") or pos(cvs(Y$,4)
2930:=cvs(TEMP$,4))=0 then let TEMP$=TEMP$+", "+fnTITLE$(ZZ$) fi; goto 2930
2940 if TEMP$>"" then let TEMP$=TEMP$(3)
2950 return 
5000 rem 5000
5010 rem "Actualiza la Base de Datos
5020 call "^GETENV.TCP","button",BUTTON$,SINFONIX_ERROR$,"UNSPACE"
5030 gosub 8100
5040 rem 
5050 if BUTTON$<>"Acepta" then goto 7810
5100 rem ^100
5110 rem "Valida los Datos del Contacto
5120 rem 
5130 rem "Clasificacion (Clientes, Proveedores, Contactos, Empresas...)
5140 call "^GETENV.TCP","Clasificacion",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5150 let K54$="",TEMP$=TEMP$+$0D0A$
5160 let Z=pos($0D0A$=TEMP$),Z$=TEMP$(1,Z-1),TEMP$=TEMP$(Z+2)
5170 let K54$=K54$+bin(num(ath(Z$)),2)
5180 if TEMP$>"" then goto 5160
5190 if K54$="" then let ERROR$=ERROR$+"Debe Seleccionar al Menos una Clasific
5190:acion<BR>"
5200 if len(K54$)>12 then let ERROR$=ERROR$+"El Maximo de clasificacion es de 
5200:6<BR>"
5210 let W0$(5,12)=K54$+fill(12,$00$)
5220 rem 
5230 rem "Tipo de Persona (1=Natural, 2=Juridica, 3=Entidad Publica)
5240 call "^GETENV.TCP","Tipo_Persona",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5250 let K56$=ath(TEMP$)
5260 if K56$="" then let ERROR$=ERROR$+"Debe Seleccionar el Tipo de Persona<BR
5260:>"
5270 let W0$(17,1)=K56$
5280 let Z$="56"+K56$; gosub 9710; let R56$=Z$
5290 rem 
5300 call "^GETENV.TCP","Nombre",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5310 if TEMP$="" then let ERROR$=ERROR$+"debe indicar el Nombre (o Razon Socia
5310:l) del Contacto (o Entidad)<BR>"
5320 if len(TEMP$)>60 then let ERROR$=ERROR$+"el largo maximo del Nombre del C
5320:ontacto es de 60 caracteres<BR>"
5330 let W0$(18,60)=TEMP$
5340 rem 
5350 call "^GETENV.TCP","Titulo",TEMP$,SINFONIX_ERROR$,"UNSPACE"
5360 if TEMP$="" then let ERROR$=ERROR$+"debe indicar un Titulo y/o Actividad 
5360:que describa al Contacto<BR>"
5370 if len(TEMP$)>60 then let ERROR$=ERROR$+"el largo maximo del Titulo y/o A
5370:ctividad es de 60 caracteres<BR>"
5380 let W0$(78,60)=TEMP$
5390 rem 
5400 call "^GETENV.TCP","RIF",RIF$,SINFONIX_ERROR$,"UNSPACE"
5410 if RIF$="" then goto 5490
5420 let TEMP$=cvs(RIF$,4)
5430 if pos(TEMP$(1,1)=R56$(31,5))=0 then let TEMP$=R56$(31,1)+TEMP$
5440 let PREF$=TEMP$(1,1); gosub 8310; if TEMP=0 then goto 5490
5450 if pos("."=R56$(31,30)) then let F=1000000 else let F=1
5460 let RIF$=PREF$+"-"+cvs(str(-abs(TEMP)/F:cvs(R56$(36,15),3)),3)
5470 let W0$(138,15)=RIF$
5480 goto 5500
5490 let ERROR$=ERROR$+"debe indicar un numero de RIF<BR>"
5500 if len(RIF$)>15 then let ERROR$=ERROR$+"el largo maximo del Numero de RIF
5500: es de 15 Caracteres<BR>"
5600 rem ^100
5610 rem "Numeros Telefonicos
5620 let TLF$=""; for ROWS=1 to 10; let XERROR$=""
5630 rem 
5640 rem "Titulo del Telefono 1=Oficina, 2=Fax, 4=Celular...
5650 call "^GETENV.TCP","TLF_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPACE
5650:"
5660 let TITLE$=ath(TITLE$)
5670 rem 
5680 rem "Numero de Telefono: +58 (0212) 765 43 21
5690 call "^GETENV.TCP","TLF_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
5700 rem 
5710 rem "Status de la Linea: "DELETE"=elimina sino:  "(none)"=no Elimina
5720 call "^GETENV.TCP","TLF_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
5730 rem 
5740 if ST$="DELETE" or DATA$="" then goto 5790
5750 let Z$="66T"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
5750:R$+"Debe Indicar un titulo para el Telefono<BR>"
5760 if len(DATA$)>20 then let XERROR$=XERROR$+"El Largo Maximo para el Telefo
5760:no es de 20 Caracteres<BR>"
5770 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(20)
5780 let TLF$=TLF$+TITLE$(1,1)+DATA$(1,20)
5790 rem 
5800 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (Telefono
5800:s)<BR>"+XERROR$+"<BR>"
5810 let ERROR$=ERROR$+XERROR$
5820 next ROWS
5830 let W0$(748,210)=TLF$+fill(210)
5900 rem ^100
5910 rem "eMail & wSite
5920 let EMAIL$=""; for ROWS=1 to 10; let XERROR$=""
5930 rem 
5940 rem "Titulo del eMail & wSite 1=eMail, 2=WebSite...
5950 call "^GETENV.TCP","MAIL_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPAC
5950:E"
5960 let TITLE$=ath(TITLE$)
5970 rem 
5980 rem "Codigo de eMail o wSite: cor...@gmail.com | www.gmail.com
5990 call "^GETENV.TCP","MAIL_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
6000 rem 
6010 rem "Status de la Linea: "DELETE"=elimina sino:  "(none)"=no Elimina
6020 call "^GETENV.TCP","MAIL_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
6030 rem 
6040 if ST$="DELETE" or DATA$="" then goto 6120
6050 let Z$="66E"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
6050:R$+"Debe Indicar un titulo para el eMail o wSite<BR>"
6060 if len(DATA$)>60 then let XERROR$=XERROR$+"El Largo Maximo para el eMail 
6060:o wSite es de 60 Caracteres<BR>"
6070 let Z=2; if pos("EMAIL"=Z$(31,30)) then let Z=pos("@"=DATA$)
6080 let X=pos("."=DATA$,-1); if X then let X=len(DATA$(1+X))
6090 if Z<2 or X<2 or X>6 then let XERROR$=XERROR$+"el eMail o wSite no es Val
6090:ido<BR>"
6100 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(60)
6110 let EMAIL$=EMAIL$+TITLE$(1,1)+DATA$(1,60)
6120 rem 
6130 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (eMail & 
6130:wSite)<BR>"+XERROR$+"<BR>"
6140 let ERROR$=ERROR$+XERROR$
6150 next ROWS
6160 let W0$(958,610)=EMAIL$+fill(610)
6200 rem ^100
6210 rem "Direcciones Postales
6220 let DIR$=""; for ROWS=1 to 5; let XERROR$=""
6230 rem 
6240 rem "Titulo de la Direccion 1=Oficina, 2=Casa, 4=Habitacion...
6250 call "^GETENV.TCP","DIR_Titulo"+str(ROWS),TITLE$,SINFONIX_ERROR$,"UNSPACE
6250:"
6260 let TITLE$=ath(TITLE$)
6270 rem 
6280 rem "Direccion: Avenida, Calle, Edificio, Piso, Oficina
6290 call "^GETENV.TCP","DIR_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE"
6300 rem 
6310 rem "Zona Postal: Urbanizacion, Ciudad, Estado, Pais...
6320 call "^GETENV.TCP","DIR_Key"+str(ROWS),KEY$,SINFONIX_ERROR$,"UNSPACE"
6330 let KEY$=ath(KEY$)
6340 rem 
6350 rem "Status de la Linea: "DELETE"=elimina, "(none)"=NO Elimina
6360 call "^GETENV.TCP","DIR_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE"
6370 rem 
6380 if ST$="DELETE" or (DATA$="" and KEY$="") then goto 6440
6390 let Z$="66D"+TITLE$; gosub 9710; if pos(" "<>Z$)=0 then let XERROR$=XERRO
6390:R$+"Debe Indicar un titulo para la Direccion<BR>"
6400 if DATA$="" then let XERROR$=XERROR$+"Debe Indicar la Avenida, Calle, Edi
6400:ficion...<BR>"
6410 if len(DATA$)>110 then let XERROR$=XERROR$+"El Largo Maximo para la Direc
6410:cion es de 110 Caracteres<BR>"
6420 let TITLE$=TITLE$+fill(1),DATA$=DATA$+fill(110),KEY$=KEY$+fill(8)
6430 let DIR$=DIR$+TITLE$(1,1)+DATA$(1,110)+KEY$(1,8)
6440 rem 
6450 if XERROR$>"" then let XERROR$="ERROR en la Linea "+str(ROWS)+" (Direccio
6450:nes Postales)<BR>"+XERROR$+"<BR>"
6460 let ERROR$=ERROR$+XERROR$
6470 next ROWS
6480 let W0$(153,595)=DIR$+fill(595)
6500 rem ^100
6510 rem "Personas de Contacto
6520 let ITEM$="PER",ITEM_TITLE$="Personas de Contacto",WRITE=0; gosub 7200
6600 rem ^100
6610 rem "Empresas Relaciondas
6620 let ITEM$="EMP",ITEM_TITLE$="Empresas Relaciondas",WRITE=0; gosub 7200
6700 rem ^100
6710 rem "Valida los Campos Adicionales del CONTACTO
6720 let RECORD$=W0$(ADICIONAL)
6730 call "ED110.7.www",0,100,RECORD$,"WRITE!","","",ERROR$
6740 let W0$(ADICIONAL)=RECORD$
6750 rem 
6760 rem "Valida si coloco una IMAGEN AL PRODUCTO
6770 call "^IMAGE.www",0,hta(K0$),"file_image",ERROR$
6780 rem 
6790 if ERROR$>"" then goto 8410
6800 rem ^100
6810 rem "la informacion registrada en el formulario es VALIDA!
6900 rem ^100
6910 rem "Actualiza las Personas de Contacto
6920 let ITEM$="PER",ITEM_TITLE$="Personas de Contacto",WRITE=1; gosub 7200
6930 let W0$(1568,630)=ITEM_DATA$+fill(630)
7000 rem ^100
7010 rem "Actualiza las Empresas Relaciondas
7020 let ITEM$="EMP",ITEM_TITLE$="Empresas Relaciondas",WRITE=1; gosub 7200
7030 let W0$(2198,630)=ITEM_DATA$+fill(630)
7040 rem 
7050 rem "Actualiza los datos del Contacto
7060 if K0$(1,3)<>$000000$ then goto 7080
7070 extract record(3,key="")Z$; let K0$(1,3)=Z$(29,3),Z$(29,3)=bin(dec($00$+Z
7070:$(29,3))+1,3); write record(3)Z$; find record(3,key=K0$(1,3),dom=7080); g
7070:oto 7070
7080 call "RC110.REC",0,3,K0$(1,3),W0$; write record(3,key=K0$(1,3))W0$
7090 call "^INDS",3,K0$,R0$,W0$,SORT$,PHONETIC$,PHONETIC_TABLE$
7100 rem 
7110 rem "Actualiza si coloco una IMAGEN AL PRODUCTO
7120 call "^IMAGE.www",1,hta(K0$),"file_image",ERROR$
7130 rem 
7140 let MESSAGE$="las modificaciones efectuadas al Contacto "+W0$(18,60)+"<BR
7140:>han sido realizadas"
7150 goto 8510
7200 rem ^100
7210 rem "Personas de Contacto (o Empresas Relacionadas)
7220 let ITEM_DATA$=""; for ROWS=1 to 10; let XERROR$="",ROWS$=""
7230 rem 
7240 rem "Nombre (o Razon Social) del Contacto (o Entidad)
7250 call "^GETENV.TCP",ITEM$+"_Data"+str(ROWS),DATA$,SINFONIX_ERROR$,"UNSPACE
7250:"
7260 let ROWS$=ROWS$+crc(DATA$)
7270 rem 
7280 rem "Codigo del Registro Interno (CRI)
7290 call "^GETENV.TCP",ITEM$+"_Key"+str(ROWS),KEY$,SINFONIX_ERROR$,"UNSPACE"
7300 let KEY$=ath(KEY$)
7310 let ROWS$=ROWS$+crc(KEY$)
7320 rem 
7330 rem "Titulo y/o Actividad que Describa al Contacto (o Entidad)
7340 call "^GETENV.TCP",ITEM$+"_Obs"+str(ROWS),OBS$,SINFONIX_ERROR$,"UNSPACE"
7350 let ROWS$=ROWS$+crc(OBS$)
7360 rem 
7370 rem "Status de la Linea: "DELETE"=elimina, "(none)"=NO Elimina
7380 call "^GETENV.TCP",ITEM$+"_Status"+str(ROWS),ST$,SINFONIX_ERROR$,"UNSPACE
7380:"
7390 rem 
7400 if ST$="DELETE" then let ROWS$=""
7410 if DATA$="" then let XERROR$=XERROR$+"Debe Indicar un Nommbre para la "+I
7410:TEM_TITLE$+"<BR>"
7420 if len(DATA$)>60 then let XERROR$=XERROR$+"El Largo Maximo del Nommbre pa
7420:ra la "+ITEM_TITLE$+" se de 60 Caracteres<BR>"
7430 if len(OBS$)>60 then let ERROR$=ERROR$+"el largo maximo del Titulo y/o Ac
7430:tividad es de 60 caracteres<BR>"
7440 rem 
7450 if XERROR$>"" then let XERROR$=XERROR$+"ERROR en la Linea "+str(ROWS)+" (
7450:"+ITEM_TITLE$+")<BR>"+XERROR$
7460 if WRITE=0 then goto 7500
7470 rem 
7480 if pos($00$<>ROWS$) then gosub 7610
7490 rem 
7500 if pos($00$<>ROWS$) then let ERROR$=ERROR$+XERROR$
7510 rem 
7520 let KEY$=KEY$+$000000$
7530 let Z$=KEY$(1,3)+OBS$+fill(63); let ITEM_DATA$=ITEM_DATA$+Z$(1,63)
7540 rem 
7550 next ROWS
7560 return 
7600 rem ^100
7610 rem "Actualiza las Personas de Contactos o Empresas Relacionadas
7620 if dec(KEY$) then extract record(3,dom=7630,key=KEY$)Z0$; goto 7680
7630 let Z0$=fid(3),Z0$=fill(dec(Z0$(7,2)),$00$),Z0$(1,4)="A"+bin(F0,3),Z0$(17
7630:,136)="",Z0$(153,119*5)=R66D$,Z0$(748,21*10)=R66T$,Z0$(958,61*10)=R66E$
7640 let KEY$=fill(3,$00$)
7650 if ITEM$="PER" then let Z=91,Z$="1" else let Z=92,Z$="2"
7660 let Z0$(5,2)=bin(Z,2); rem "Persona de Contacto=91 / Empresa Relacionada=
7660:92
7670 let Z0$(17,1)=Z$; rem      "Persona Natural    = 1 / Persona Juridica   =
7670: 2
7680 let Z1$=Z0$
7690 let Z1$(18,60)=DATA$; rem "Nombre (o Razon Social) del Contacto (o Entida
7690:d)
7700 let Z1$(78,60)=OBS$; rem "Titulo o Actividad del Contacto (o Entidad)
7710 rem 
7720 rem "Actualiza los datos del Contacto
7730 if KEY$(1,3)<>$000000$ then goto 7750
7740 extract record(3,key="")Z$; let KEY$(1,3)=Z$(29,3),Z$(29,3)=bin(dec($00$+
7740:Z$(29,3))+1,3); write record(3)Z$; find record(3,key=KEY$(1,3),dom=7750);
7740: goto 7740
7750 call "RC110.REC",0,3,KEY$(1,3),Z1$; write record(3,key=KEY$(1,3))Z1$
7760 call "^INDS",3,KEY$,Z0$,Z1$,SORT$,PHONETIC$,PHONETIC_TABLE$
7770 return 
7800 rem ^100
7810 rem "Elimina el Registro
7820 if BUTTON$<>"Elimina" then goto 7910
7830 let ERROR$="No esta permitido la Eliminacion de Contactos"
7840 goto 8410
7850 let MESSAGE$="la eliminacion del Contacto "+W0$(18,60)+"<BR>han sido real
7850:izadas"
7860 goto 8510
7900 rem ^100
7910 rem "Nuevo Documento
7920 if BUTTON$<>"Nuevo" then goto 8010
7930 let ERROR$=""
7940 goto 8510
8000 rem ^100
8010 rem "Boton no definido
8020 let ERROR$="no esta definido el valor para la variable: ""button$"""
8030 goto 8410
8100 rem ^100
8110 rem "Lee el registro a actualizar
8120 gosub 8230
8130 call "^NEXT",2,4,"75FICHA"+str(dec(S0$(CLIENTE,1)):"00"),$00$,S0$(2,pos("
8130: "<>S0$(2,8),-1)),0,"",0,dec(S0$(1,1))
8140 if dec(K0$) then extract record(3,dom=8150,key=K0$)R0$; goto 8170
8150 let R0$=fid(3),R0$=fill(dec(R0$(7,2)),$00$),R0$(1,4)="A"+bin(F0,3),R0$(17
8150:,136)="",R0$(153,119*5)=R66D$,R0$(748,21*10)=R66T$,R0$(958,61*10)=R66E$,R
8150:0$(2900,10)=CTRL$
8160 let K0$=fill(3,$00$)
8170 let N0=dec(K0$)
8180 if N0 and BUTTON$<>"Nuevo" then call "^NEXT",3,4,"75FICHA"+str(dec(S0$(CL
8180:IENTE,1)):"00"),$00$,S0$(2,pos(" "<>S0$(2,8),-1)),0,"",N0,dec(S0$(1,1))
8190 let K0$=bin(N0,3)
8200 let W0$=R0$,OLD_K0$=K0$
8210 return 
8220 rem 
8230 rem "Seleccion del Tipo de Registro
8240 let SQL$=ath(SQL$,err=8250)
8250 if K0$="" then let K0$=fill(3,$00$),K0$(1)=SQL$+K0$
8260 return 
8270 rem "8000
8280 rem "Convierte un STRING de Bs. a NUMERICO
8290 let Z$="$(,.)"; goto 8330
8300 rem 
8310 rem "Convierte un STRING en NUMERICO
8320 let Z$=""
8330 let CONVERT_NUM=0,TEMP=pos("."=TEMP$,-1),SIGN=1; if pos("-"=TEMP$) or pos
8330:("("=TEMP$) then let SIGN=-1
8340 let Z=max(pos("0">TEMP$),pos("9"<TEMP$)); if Z then if Z$="" or pos(TEMP$
8340:(Z,1)=Z$) then let CONVERT$=CONVERT$+TEMP$(Z,1),TEMP$=TEMP$(1,Z-1)+TEMP$(
8340:Z+1); if Z<TEMP then let TEMP=TEMP-1 fi; goto 8340
8350 if TEMP then let TEMP$=TEMP$(1,TEMP-1)+"."+TEMP$(TEMP)
8360 let TEMP=num(TEMP$,err=8370)*SIGN,TEMP$=str(TEMP),CONVERT_NUM=1
8370 return 
8400 rem ^100
8410 let MESSAGE$="Error en los datos del formulario, revise los siguientes ca
8410:mpos:"
8420 goto 8560
8500 rem ^100
8510 if BUTTON$="Acepta" then let Z$="top.window.Link.document.forms[0].codigo
8510:.value="""+cvs(W0$(1,8),2)+""";" else let Z$=""
8520 let JAVASCRIPT$="<% NOT CONVERT %>"+Z$+"top.window.Link.location.href=""/
8520:cgi-bin/sinfonix.pl?"" + sii_system + ""%20ED630.www"
8530 call "^GETENV.TCP","PreView",PREVIEW$,SINFONIX_ERROR$,"UNSPACE"
8540 if RETURN$="ON" or (PREVIEW$>"" and PREVIEW$<>"OFF") then let JAVASCRIPT$
8540:=JAVASCRIPT$+"%20"+hta(K0$); if PREVIEW$>"" and PREVIEW$<>"OFF" then let 
8540:JAVASCRIPT$=JAVASCRIPT$+"%20preview"
8550 let JAVASCRIPT$=JAVASCRIPT$+""";"
8560 run "stdio_form"
8570 rem 
9000 rem 9000"DEFINITION SECTION
9010 let M$="-####,###,###.00",SORT$=bin(51,1),PHONETIC$="ED",CLIENTE=32
9020 let TITLE$="          RREG      MMun      pParr     "
9030 rem 
9040 find record(FILES+1,key="EDCTL"+FID0$)I0$; let I0$=I0$+bin(0,1)+bin(2,1)
9050 find record(FILES+3,key="")S0$; let ADICIONAL=3000
9060 rem 
9070 rem "Verifica si usa el sistema RECOLECTOR
9080 let RCFILES=160,RECOLECT$="NO"; call "^OFSET",RCFILES+1,"RC??( 1)"; read 
9080:record(RCFILES+1,key="",err=9100)RCS0$; let RECOLECT$="YES"
9090 let OPER=dec(RCS0$(1,2))*1000+OPER
9100 rem 
9110 let X$="66T",X=21,R66T$=fill(X*10),Z$=R66T$; gosub 9170; let R66T$=Z$
9120 let X$="66E",X=61,R66E$=fill(X*10),Z$=R66E$; gosub 9170; let R66E$=Z$
9130 let X$="66D",X=119,R66D$=fill(X*5),Z$=R66D$; gosub 9170; let R66D$=Z$
9140 let CTRL$=fill(10),F0$=day; call "^DATE",2,num(F0$(1,2)+F0$(4,2)+F0$(7)),
9140:F0,F0$; let F1=F0,CTRL$(1)=FID0$,CTRL$(4)=bin(OPER,2)+bin(F0,3)+bin(int(t
9140:im*100),2)
9150 let Z$=fid(EDFILES+3),XED_R3$=fill(dec(Z$(7,2)),$00$),XED_R3$(1,4)="A"+bi
9150:n(F0,3),XED_R3$(17,136)="",XED_R3$(153,119*5)=R66D$,XED_R3$(748,21*10)=R6
9150:6T$,XED_R3$(958,61*10)=R66E$,XED_R3$(1568,63*20)=fill(63*20,$000000$+fill
9150:(60)),XED_R3$(2900,20)=CTRL$+CTRL$
9160 return 
9170 let Z=1; read record(1,key=X$,dom=9180)
9180 if Z<len(Z$) then let K$=key(1,end=9190); if pos(X$=K$)=1 then read recor
9180:d(1)R$; if pos("DEFAULT"=R$(31)) then let Z$(Z,1)=K$(4,1),Z=Z+X; goto 918
9180:0
9190 return 
9300 rem 9300"ROUTINE PROGRAM
9310 rem 
9320 rem "ERROR I/O FILE
9330 call "^IOERR",err,tcb(5),"ED630.www"; retry
9400 rem 9400"EDIT DISPLAY MASK
9410 call "^MASK",9440; escape
9420 rem "DISPLAY MASK
9430 return 
9440 rem 
9700 rem 9700"READ TABLE
9710 let Z$=cvs(Z$,3); find record(EDFILES+1,key=Z$,dom=9720)Z$; return 
9720 dim Z$(100); return 
9730 def fnSEEK$(KEY$,FILE_ID$)=fnBIT$(KEY$,FILE_ID$,$FF$,len(KEY$))
9740 def fnBIT$(KEY$,FILE_ID$,MOST$,LENGTH)=KEY$(1,LENGTH-1)+chr(max(asc(KEY$(
9740:LENGTH)),1)-1)+MOST$(1,sgn(max(asc(FILE_ID$(2))-LENGTH,0)))
9750 def fnTITLE$(ZZ$)=cvs(cvs(TITLE$(1+max(1,pos(ZZ$(78,1)=TITLE$,10)),9),3)+
9750:" "+ZZ$(1,60),3)
9800 rem 9800"EDIT ERROR
9810 print (0,err=9810)'RB',; return 
9900 rem 9900"END OF PROGRAM
9910 seterr 9920; exit 
9920 release 
9930 if TEMP$>"" then goto 5160


El 16 de septiembre de 2016, 16:48, BBX Vpro <shal...@gmail.com> escribió:
ok en que esta desarrollado ese ejemplo?

El 16 de septiembre de 2016, 17:47, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
El ejemplo que deje puedes ejecutarlo en cualquier plataforma (celular, tablet, etc.), solo se requiere de un explorador web.

prueba ejecutar el link en cualquier celular y te funcionara.

El 16 de septiembre de 2016, 16:45, BBX Vpro <shal...@gmail.com> escribió:
si claro pero cuando lo quieres sacar a la web? y cuando usar archivos de datos mkeyed?

El 16 de septiembre de 2016, 17:43, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
como veras del lado servidor utilizo pro5, esto quiere decir que no tengo que parchar nada, simplemente escribo en los archivo directamente y ya, igualmente lo puedes hacer con Bbj.

El 16 de septiembre de 2016, 16:41, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
Ya entiendo cuando hablas de parches.


El 16 de septiembre de 2016, 16:38, BBX Vpro <shal...@gmail.com> escribió:
Quiero hacer una comparativa
   1.-    la metodologia que ocupaba en primera instancia era la siguiente: teniamos una plataforma web desarrollada en .net en la cual haciamos los pedidos y cotizaciones, estos se almacenaban en mysql , en el servidor teniamos un demonio hecho en vpro5 leyendo la mysql y mediante la activacion de un flag mandaba la info a los archivos de datos de vpro5 ,, obiamente esta plataforma puede ser en html c# etc.....


El 16 de septiembre de 2016, 17:28, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
si decides por cambiar a Bbj y quieres sacar el máximo potencial de el, igualmente tendrás que desarrollar nuevamente tus aplicaciones.


El 16 de septiembre de 2016, 16:26, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
pensé que te referías a la modernización de tus aplicaciones, en todo caso lo que planteo es la modernización de las aplicaciones bajo un habiente de desarrollo que para mi es hacia donde se encamina todo esto (la web), unos utilizan python, otros PHP, yo con pro5.

El 16 de septiembre de 2016, 16:18, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
para que tengas una idea mas clara, pro5 viene siendo lo que en otros entornos utilizan LAMP (Linux, Apache, MySQL & PHP).


El 16 de septiembre de 2016, 16:11, Carlos E. Mendoza S. <inge...@gmail.com> escribió:
Al igual que cualquier aplicación web, pro5 actúa del lado servidor, del lado cliente debes usar html, ccs, jscript.

El 16 de septiembre de 2016, 16:02, BBX Vpro <shal...@gmail.com> escribió:

Hola eso es P ro5   solamente?


El 16/9/2016 17:00, "Carlos E. Mendoza S." <inge...@gmail.com> escribió:
Estimados colegas,

La modernización es relativa, muy bien puedes modernizar tus aplicaciones con pro5.

Aquí les dejo una aplicación desarrollada en pro5 que puedes ejecutar en cualquier plataforma, solo se requiere de un explorador web para su ejecución.


pronto colocare los fuentes para que puedan adaptarlos a sus necesidades.

Saludos Cordiales,
Carlos Mendoza




El 16 de septiembre de 2016, 13:35, Wilton Villar <wal...@gmail.com> escribió:

Hola !

Muy interesante !

Como se puede ver una demo o un instructivo, asi como los costos de bbj.

Saludos.


El 16 sept. 2016 1:31 PM, "BBX Vpro" <shal...@gmail.com> escribió:
Buenas tardes colegas.

Hace mucho rato que mi posición con referente a la migracion de vpro5 hacia bbj no la encontraba beneficiosa y demasiado costosa debido a que no conocía el potencial de bbj orientado a los negocios en particular.

Creo que esto me llevo a permanecer en la idea de mantenerme en vpro5 y en el tiempo y de alguna forma desarrollar "parches"  que me permitieran conectar la aplicación hacia el exterior teniendo que pasar por escritorio remoto u otros en la forma de acceso a ella.

Sin embargo gracia a Jose Aguilar he tenido la posibilidad de conocer el mundo de bbj y las grandes posibilidades que ofrece y poniendo en la balanza el costo de bbj y sus licencias en un lado y en el otro los beneficios que este nos da, de este modo se compensa en todo sentido.

Les invito a que puedan involucrarse en la modernización hacia BBJ, creo en mi opinión  bbj es igual a ( VPRO5 + BBJ(SUS COMANDOS) + JAVA y otras cosas por descubrir,  mezclando todo esto se obtiene que nuestra simple aplicación este disponible por la red virtual incluyendo celulares tables etc, en cualquier plataforma que pueda ejecutar java, esto nos amplia la visión de los negocios compensando en todo sentido el costo anteriormente mencionado.

Les invito a que puedan interiorizarse mas en BBJ es lo que hoy, todo programador de vpro5 necesita ya que este suple lo que le faltaba a vpro5  hacia el exterior.

Atentamente
Marcos Pizarro C.
Analista de Sistemas
 

--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--

--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Pedro del Valle
el sabio sabe que ignora (confucio)

Wilton Villar

unread,
Sep 27, 2016, 10:54:22 PM9/27/16
to mund...@googlegroups.com

Si lo recuerdo..!!!
Yo comence con esa consola. Las que teniamos aqui en Dominicana eran azules...uff

Luego adquirimos aquel equipo que los discos eran extraibles, con pantallas cremas....

Que buenos tiempos....

Wilton Villar

unread,
Sep 27, 2016, 10:55:46 PM9/27/16
to mund...@googlegroups.com

Estoy muy interesado en el tema de la modernizacion, ya tengo instalado el servidor Apache, intentare el siguiente, espero me puedan asistir.

Gracias.

Carlos E. Mendoza S.

unread,
Sep 27, 2016, 11:10:28 PM9/27/16
to mund...@googlegroups.com
Buenas noches Eduardo,

Cuando invocas vpro5 con los archivos de direccionamiento el -tIO no hace falta, vpro5 lo asume automáticamente.

Una pregunta Eduardo, antes de hacer las mejoras al script, probaste si este funcionaba?

Saludos.

Fernando Cabrera

unread,
Sep 28, 2016, 11:46:10 AM9/28/16
to mund...@googlegroups.com
Obviamente es Carlos. Finales de los 70's principios de los 80's. Carlos trabajaste para MAI? o para un cliente de MAI, porque yo estuve en mi primer curso con dos Ingenieros de servicio de Venezuela en la Cd de México




F3rn4nd0 C4br3r4 Ru1z.
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

Carlos E. Mendoza S.

unread,
Sep 28, 2016, 9:56:16 PM9/28/16
to mund...@googlegroups.com
Hola Fernando,

Como estas?

Por aquella época trabajaba en el Banco de Venezuela, específicamente en el Departamento de Sistemas de Arrendadora Banvenez, ellos compraron equipos de MAI de Venezuela y bueno allí di mis primeros pasos en el mundo de la programación, con el lenguaje Basic hasta hacer de Arrendadora Banvenez la primera arrendadora del País.

Posteriormente me retire del Banco y comencé como Gerente de Proyectos Especiales de SYSMAC, una empresa de Sistemas que desarrollaba bajo un lenguaje estructurado llamado CADOL orientado al desarrollo de aplicaciones comerciales, nada que ver con Basic, de verdad era placentero programar en CADOL, hasta que llego el Viernes negro y acabo con todo, la empresa quebró y quedamos todos en la calle.

Luego llego "lo mejor de ambos mundos" (BASIS / UNIX) y a partir de allí me dedique a desarrollar sistemas por mi cuenta.

Saludos cordiales,
Carlos Mendoza




Carlos E. Mendoza S.

unread,
Sep 28, 2016, 10:24:49 PM9/28/16
to mund...@googlegroups.com
Estimado Wilton

Me complace saber de tu interés en el tema, estaré atento a tus comentarios o a cualquier pregunta que estimes conveniente hacer.

Y nuevamente te reitero mi invitación, la cual hago extensiva a todos los miembros de mundoBBX, a participar en el grupo creado a tal fin, para tratar el tema de:

como desarrollar aplicaciones WEB con Business Basic
en:


Saludos cordiales,
Carlos Mendoza.


Eduardo hernández

unread,
Sep 28, 2016, 11:13:57 PM9/28/16
to mund...@googlegroups.com
Si, Carlos, funcionó bien.
1) Realmente, los cambios que hice fue en cuanto
a ubicación y nombre de los archivos temporales.
2) En mis pon y quita, puse el parámetro -tIO pensando
en que era necesario. Como dices, ya no lo probé sin éste.
3) En el rastreo del error que te comento en la imagen,
lo que identifico es que las variables globales de
la forma de entrada (codigo, nombre, ...) NO se crean y de
ahí el mensaje de error de la imagen. A este respesto es que
te preguntaba si me hubiera hecho falta algo.

Saludos.


Enrique Solis

unread,
Sep 28, 2016, 11:14:03 PM9/28/16
to mund...@googlegroups.com

Pues sabemos varios que en esa época estuvimos en Mai. Yo estuve en 1978, cuando el director era el Sr. Manzo (papá de los dos americanistas) y el gerente de Sistemas era Rafael, su secretaria era Tere y estaban los ings. Solis, Caballero, Maldonado, etc.

Gustó saber de compañeros de esa época.

Wilton Villar

unread,
Sep 29, 2016, 12:06:58 AM9/29/16
to mund...@googlegroups.com

Gracias Carlos.

Un abrazo.

Fernando Cabrera

unread,
Sep 29, 2016, 12:08:47 PM9/29/16
to mund...@googlegroups.com
Saludos Enrique, espero te acuerdes de mi, yo tambien estuve en MAI de Mexico, hasta 1987... uuuuhhhhhhhh, Si contactas a alguno de los antiguos ingenieros (que aun vivan) les saludas de mi parte, de la Suc. Guadalajara

F3rn4nd0 C4br3r4 Ru1z.
Circ. Sierra Santa Barbara Oeste · 608-C
Lomas del Mirador
Tlajomulco de Zuñiga, Jal.

Cel: (+52 33)1760-0693

It is loading more messages.
0 new messages