BBX2ASCII - Convierte archivos MKEYED / DIRECT a formato ASCII
Este programa simplemente pide un archivo origen en formato BBx (sirve para todas las versiones) y pide un nombre de archivo destino (que será creado en formato ASCII) para crearlo y luego exportar los datos BBx a dicho archivo. Puede usar extensión .XLS si lo desea para abrir directamente en Excel (aunque no es un archivo excel nativo); esta extensión usada en combinación con el separador de campos por defecto, permite abrir casi directamente el archivo en Excel.
Además, pregunta la cantidad de campos que contiene cada registro (no verifica si es correcto) para crear las columnas respectivas.
Finalmente pide un separador de campos. Si da ENTER asume un separador que es más o menos natural para excel.
NOTA: El programa no finaliza su ejecución a no ser que haga un proceso de exportación. Para interrumpir la ejecución en cualquier momento use la secuencia de interrupción adecuada (normalmente Ctrl+C ó Ctrl+Break).
Copie este programa en el espacio de trabajo de BBx (en cualquiera de sus versiones) y ejecútelo:
0010 REM "[BBX2ASCII] convierte archivo bbx a ASCII
0020 REM "MundoBBx (http://sites.google.com/site/mundobbx)
0030 BEGIN
0040 REM
0050 REM "Instrucciones
0060 REM "-------------
0070 PRINT 'CS',"Cuando ingresa el archivo origen se verifica que existe. Si e
0070:xiste"
0080 PRINT "pide un archivo de destino donde vaciar los datos en ASCII. Luego
0080:pide"
0090 PRINT "el numero de campos de cada registro para crear las columnas respe
0090:ctivas"
0100 PRINT "Por ultimo, pide un separador (ENTER=Asume $09$ listo para excel).
0100:"
0110 PRINT " "
0120 PRINT " "
0130 REM
0200 REM 0200 "archivo origen
0210 REM "==============
0220 INPUT 'BR',"Ingrese Archivo Origen : ",'ER',ORIGEN$
0230 CLOSE (1); OPEN (1,ERR=0200)ORIGEN$
0240 REM
0300 REM 0300 "archivo destino
0310 REM "===============
0320 INPUT "Ingrese Archivo Destino: ",DESTINO$
0330 REM
0340 ERASE DESTINO$,ERR=0350
0350 STRING DESTINO$
0360 CLOSE (2); OPEN (2,ERR=0300)DESTINO$
0370 REM
0400 REM 0400 "pide cantidad de campos
0410 REM "=======================
0420 INPUT 'BR',"Indique Cantidad de Campos : ",'ER',CAMPOS
0430 IF CAMPOS<1 OR CAMPOS>500 THEN GOTO 0400
0440 REM
0500 REM 0500 "pide separador en archivo destino
0510 REM "=================================
0520 INPUT "Indique Separador de Campos a Usar [ENTER]=$09$ : ",SEP$
0530 IF LEN(SEP$)>4 THEN GOTO 0500
0540 IF SEP$=$$ THEN LET SEP$=$09$
0550 REM
0600 REM 0600 "PREPARA TITULOS
0610 REM "===============
0620 LET SEP1$=SEP$
0630 LET TITULO$=$$
0640 FOR Y=1 TO CAMPOS
0650 IF Y=CAMPOS THEN LET SEP1$="" ELSE LET SEP1$=SEP$
0660 LET TITULO$=TITULO$+"CAMPO_"+STR(Y)+SEP1$
0670 NEXT Y
0680 REM
1000 REM 1000 "inicia proceso de lectura
1010 REM "=========================
1020 PRINT "Procesando. Espere..."
1030 PRINT " "
1040 LET TIT=1
1050 REM
1060 READ (1,KEY="",DOM=LEE_REGISTRO)
1070 LEE_REGISTRO:
1080 DIM REGISTRO$[1:CAMPOS]; READ (1,END=FIN_PROCESO)REGISTRO$[ALL]
1090 REM
1100 IF TIT THEN WRITE (2)TITULO$; LET TIT=0
1110 REM
1400 REM 1400 "ciclo arma cadena para archivo plano
1410 REM "====================================
1420 LET SEP1$=SEP$
1430 LET CADENA$=$$
1440 FOR Z=1 TO CAMPOS
1450 IF Z=CAMPOS THEN LET SEP1$="" ELSE LET SEP1$=SEP$
1460 LET CADENA$=CADENA$+REGISTRO$[Z]+SEP1$
1470 NEXT Z
1480 WRITE (2)CADENA$
1490 GOTO LEE_REGISTRO
1500 REM
2000 REM 2000 "fin de proceso
2010 REM "==============
2020 FIN_PROCESO:
2030 PRINT " "
2040 PRINT "El Proceso Finalizo con Exito"
2050 PRINT " "
2060 STOP
2070 REM