No puedo escribirte aquí un manual de programación, y hace mucho tiempo que no utilizo QuickBasic (utilicé la versión 4.5), espero que esto te sirva de orientación:
OPEN nombre$ FOR INPUT AS #1
Abre el archivo nombre$ para lectura en modo secuencial (aplicable a archivos de texto).
Para leer datos del archivo:
INPUT #1, variable
Funciona igual que INPUT desde el teclado.
OPEN nombre$ FOR OUTPUT AS #1
Abre el archivo nombre$ para escritura en modo secuencial (archivos de texto). Si es un archivo ya existente, lo destruirá.
Para escribir datos en el archivo:
PRINT #1, variable
Funciona igual que PRINT. Si necesitas formato, utiliza PRINT #1 USING
OPEN nombre$ FOR APPEND AS #1
Abre el archivo nombre$ para escritura en modo secuencial, sin destruir lo anterior, para añadir contenido. Aparte de esto, funciona del mismo modo que el modo OUTPUT.
OPEN nombre$ FOR RANDOM AS #1
Abre el archivo nombre$ para lectura/escritura en modo aleatorio (archivos binarios).
Después de abrir el archivo, debes declarar el registro con sus correspondientes campos, con variables de cadena, indicando la longitud de cada campo. Por ejemplo, un registro en el que necesito guardar un entero de 16 bits, un float de 32 bits y una cadena de 10 caracteres debería declararse como
FIELD #1, 2 AS A$, 4 AS B$, 10 AS C$
La longitud de una línea estaba limitada a 255 caracteres, por lo que si tenías muchos campos en tu registro tenías que comenzar en una nueva línea, de este modo:
FIELD #1, 16 AS N$, ... (aquí sigo poniendo campos)
donde el primer campo de todos indicaba la longitud total declarada hasta ese momento (16 en este ejemplo).
Para leer o guardar datos, se hace con GET y PUT:
GET #1, N%, X, A$
Lee un número entero (en BASIC los enteros eran de 2 bytes y se indicaban con el sufijo % detrás del nombre de la variable), un número en coma flotante y una cadena de caracteres.
PUT #1, N%, X, A$
Escribe un número entero, un número en coma flotante y una cadena de 10 caracteres (tal como se definió en FIELD).
CLOSE #1
cierra el archivo (independientemente del modo de apertura).
El numerito (#1) indica el número de canal (por expresarlo de algún modo), creo que los valores válidos eran de 1 a 255 y el valor 0 era el correspondiente a la consola (entrada por teclado y salida por pantalla).
Esto supone que conoces la estructura del archivo que quieres leer/escribir. Si lo que quieres es abrir un archivo mediante la aplicación predeterminada desde QuickBasic, se podría hacer mediante una llamada a sistema, no recuerdo el comando exacto pero sería algo así como SYSTEM("Nombre_Aplicacion Nombre_Archivo"). Si lo que quieres es, dado el nombre del archivo, llamar a la aplicación que te lo abra, deberás tener en alguna parte una base de datos con las asociaciones entre tipos de archivo y las aplicaciones correspondientes.
No sé qué versión de QuickBasic utilizas, yo usaba (como ya indiqué) la 4.5 y era una aplicación para MS-DOS (16 bits), creo que luego ya apareció Visual Basic (para Windows).
Espero que te sirva de ayuda. Saludos,