Hola
@Socavi,
A ver si con éste ejemplo te aclaras más
Supón que tienes una hoja de cálculo como la que adjunto en la imagen, y quieres traspasar los datos a un fichero, que se llama en éste caso
FICHERO.DAT, lo primero es que en tu Form, has de insertar con ExcelControl, que se llame CmExcel1, el código para traspasar los datos, que supongo que irá en un ButtomControl, (un botón), sería así:
Código COBOL:
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL FICHERO
ASSIGN TO "FICHERO.DAT"
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
FILE STATUS IS STFIC
LOCK IS AUTOMATIC WITH LOCK ON RECORD.
DATA DIVISION.
FILE SECTION.
FD FICHERO IS GLOBAL
LABEL RECORD IS STANDARD
DATA RECORD IS REG_FIC.
01 REG_FIC.
03 FICCP PIC 9(05).
03 FICPOB PIC X(30).
03 FICPRO PIC X(20).
03 FICPAI PIC X(20).
WORKING-STORAGE SECTION.
01 ESTILO PIC S9(5) COMP-5.
01 RETORNO PIC S9(5) COMP-5.
01 LIN PIC 9(9) COMP-5.
01 STFIC PIC XX.
PROCEDURE DIVISION.
*
INICIO.
OPEN I-O FICHERO.
INITIALIZE REG_FIC.
INVOKE CmExcel1 "OpenBook" *> <------ Abrimos la Hoja de cálculo
USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
1 *> <------ Aquí el número de hoja que queremos abrir
RETURNING RETORNO
END-INVOKE.
IF RETORNO NOT = 0
ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
INVOKE POW-SELF "DisplayMessage"
USING "*Error: No exsite la hoja de cálculo ..."
"ERROR"
ESTILO
END-INVOKE
CLOSE FICHERO
INVOKE POW-SELF "CloseForm"
EXIT PROGRAM
END-IF.
MOVE 2 TO LIN. *> <------ Empezamos en la linea 2, porque suponemos que la 1 contiene el encabezado de las celdas
PERFORM WITH NO LIMIT
*
* Como en PWV, no hay ninguna función, que nos indique el final de los datos en una hoja de cálculo
* vamos a suponer que si la celda nnn:1, vale 0 o está en blanco, hemos llegado al final de la hoja
*
* y empezamos a traspasar los datos, leemos las celdas, y las pasamos directamente a los campos del
* fichero que a continuación grabaremos
*
MOVE "Numeric" (LIN 1) OF CmExcel1 TO FICCP
IF FICCP = 0
EXIT PERFORM
END-IF
MOVE "Text" (LIN 2) OF CmExcel1 TO FICPOB
MOVE "Text" (LIN 3) OF CmExcel1 TO FICPRO
MOVE "Text" (LIN 4) OF CmExcel1 TO FICPAI
WRITE REG_FIC *> <----- Grabamos los datos en el fichero
INVALID KEY *> <----- Si da error, los regrabamos, por si acaso
REWRITE REG_FIC
INVALID KEY *> Si da error, informamos del número de FILE-STATUS
ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
INVOKE POW-SELF "DisplayMessage"
USING "Error al Grabar ..."
STFIC
ESTILO
END-INVOKE
END-REWRITE
END-WRITE
ADD 1 TO LIN
END-PERFORM.
ADD POW-DMICONINFORMATION POW-DMOK GIVING ESTILO.
INVOKE POW-SELF "DisplayMessage"
USING "Fin del traspaso ..."
" ¡ Atención ... !"
ESTILO
END-INVOKE.
INVOKE CmExcel1 "CloseBook".
CLOSE FICHERO.
En éste caso, cuando llegue a la línea 17 de la hoja de cálculo, el programa terminará.
Un saludo.-