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