Not sure how Tony got around the insufficient limit. The following
command file is longer, but it makes sure that the target file is large enough
for the merges.
Couldn't figure out how to determine if the file is ASCII or BINARY on the
fly, but will assume that a merge will always be with ASCII files. Maybe
someone knows (and will share) this trick.
Valeda
PARM !FILEA !FILEB !FILEC
COMMENT #
COMMENT # Merges two files into a third file
COMMENT #
COMMENT # FILEA and FILEB are to be merged into FILEC
COMMENT # FILEC may or may not exist
COMMENT # FILEC must have a sufficient limit for all the data
COMMENT # File structure must match across all three files
COMMENT #
setjcw cierror=0
setvar A_EOF FINFO('!FILEA',"EOF")
setvar B_EOF FINFO('!FILEB',"EOF")
continue
listf !FILEC > $NULL
if cierror=0 then
COMMENT #
COMMENT # FILEC exists already
COMMENT #
setvar C_EOF FINFO('!FILEC',"EOF")
setvar D_EOF A_EOF+B_EOF+C_EOF
if D_EOF > C_EOF
COMMENT #
COMMENT # FILEC is not large enough for all the data,
COMMENT # so must rebuild with sufficient disc space
COMMENT #
setvar A_TYP FINFO('!FILEA',"RECTYPE")
setvar A_TYP LFT("!A_TYP",1)
setvar A_SIZ FINFO('!FILEA',"RECSIZE")
purge FILED
build FILED;rec=!A_SIZ,,!A_TYP,ASCII;disc=!D_EOF
file FILED;acc=append
fcopy from=!FILEC;to=*FILED
purge !FILEC
rename FILED,!FILEC
endif
file !FILEC;acc=append
fcopy from=!FILEA;to=*!FILEC
else
COMMENT #
COMMENT # FILEC does not exist, need to build with like
COMMENT # structure and sufficient disc space
COMMENT #
setvar A_TYP FINFO('!FILEA',"RECTYPE")
setvar A_TYP LFT("!A_TYP",1)
setvar A_SIZ FINFO('!FILEA',"RECSIZE")
setvar C_EOF A_EOF+B_EOF
build !FILEC;rec=!A_SIZ,,!A_TYP,ASCII;disc=!C_EOF
file !FILEC;acc=append
fcopy from=!FILEA;to=*!FILEC
endif
fcopy from=!FILEB;to=*!FILEC
reset !FILEC
* - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - *
| Valeda Franklin | [log in to unmask] |
| Information Analyst | Solano Community College |
| Computer Services | Suisun City, CA 94585-3197 |
* - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - *
|