View previous topic :: View next topic
|
Author |
Message |
Prasanna Srinivas D
New User
Joined: 12 Oct 2007 Posts: 9 Location: chennai
|
|
|
|
hi,
I have to open a file in the main program which calls other program modules. The modules also use the file (read and write). The main program is also responsible for closing the file.
1> Is write possible in the module program if i pass the buffer descrtiptor to the module from the main program?
eg. file section.
fd file1
01 fs-buffer
.....
.....
procedure division.
call module1 using fs-buffer
2> How is read possible in the module program? since read uses the file name itself, is there any way to pass the file name to the module |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
no, cobol is rather explicit about which module can perform i/O. Which ever module contains the FD, that module, and only that module, can execute i/o against the FD.
Suggest that you remove the FD from the main module, write a new module (an i/o module) that can be called from anyone to perform the i/O functions. The way you have it set-up, a submodule must return to the main module to get the next or write/rewrite and then immediately be called again by the main-module. That means a lot of decision making in the main as well as the sub-module.
removing i/o to a sub-module allows a programmer to design a flexible run-unit. any module needing another record or wanting to update the file can perform an 'in-line call' to the i/o module.
In addition, if the data was formerly in a qsam file, it could be changed very easily to a vsam or db2 by only having to modify 1 i/o module. |
|
Back to top |
|
|
Prasanna Srinivas D
New User
Joined: 12 Oct 2007 Posts: 9 Location: chennai
|
|
|
|
thank you for the technique... this is much better... |
|
Back to top |
|
|
|