[COLOR=#a020f0]program[/color] appendfile
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! appends files record by record[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: stat, inp_rec_nr, out_rec_nr, nr_files, k
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#ff00ff]30[/color]) :: file_0, app_file
[COLOR=#2e8b57][b]character[/b][/color] :: my_rec
nr_files [COLOR=#804040][b]=[/b][/color] iargc()
[COLOR=#804040][b]if[/b][/color] (nr_files [COLOR=#804040][b].le.[/b][/color] [COLOR=#ff00ff]2[/color]) [COLOR=#804040][b]then[/b][/color]
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color],[COLOR=#804040][b]*[/b][/color]) [COLOR=#ff00ff]'Usage: appendfile <file_0> <app_file_1> .. <app_file_n>'[/color]
[COLOR=#804040][b]stop[/b][/color]
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#0000ff]! open the first file[/color]
[COLOR=#008080]call[/color] getarg([COLOR=#ff00ff]1[/color], file_0)
[COLOR=#804040][b]open[/b][/color]([COLOR=#804040][b]unit[/b][/color] [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]10[/color], [COLOR=#804040][b]file[/b][/color][COLOR=#804040][b]=[/b][/color]file_0, [COLOR=#804040][b]access[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'DIRECT'[/color], [COLOR=#804040][b]status[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'OLD'[/color],[COLOR=#804040][b]RECL[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]1[/color])
[COLOR=#0000ff]! count number of records in the first file[/color]
out_rec_nr [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]1[/color] [COLOR=#0000ff]! number of records in original (output) file[/color]
[COLOR=#804040][b]do[/b][/color]
[COLOR=#0000ff]! read source[/color]
[COLOR=#804040][b]read[/b][/color]([COLOR=#ff00ff]10[/color], [COLOR=#804040][b]rec[/b][/color][COLOR=#804040][b]=[/b][/color]out_rec_nr, [COLOR=#804040][b]iostat[/b][/color][COLOR=#804040][b]=[/b][/color]stat) my_rec
[COLOR=#804040][b]if[/b][/color] (stat [COLOR=#804040][b].ne.[/b][/color] [COLOR=#ff00ff]0[/color]) [COLOR=#804040][b]then[/b][/color]
[COLOR=#804040][b]exit[/b][/color]
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#0000ff]! count records[/color]
out_rec_nr [COLOR=#804040][b]=[/b][/color] out_rec_nr [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
[COLOR=#804040][b]end do[/b][/color]
[COLOR=#0000ff]! append all other files to the first file[/color]
[COLOR=#804040][b]do[/b][/color] k[COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]2[/color], nr_files
[COLOR=#0000ff]! get file for reading[/color]
[COLOR=#008080]call[/color] getarg(k, app_file)
[COLOR=#804040][b]open[/b][/color]([COLOR=#804040][b]unit[/b][/color] [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]20[/color], [COLOR=#804040][b]file[/b][/color][COLOR=#804040][b]=[/b][/color]app_file,[COLOR=#804040][b]access[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'DIRECT'[/color], [COLOR=#804040][b]status[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'OLD'[/color], [COLOR=#804040][b]RECL[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]1[/color])
inp_rec_nr [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]1[/color] [COLOR=#0000ff]! number of records in each input file[/color]
[COLOR=#804040][b]do[/b][/color]
[COLOR=#0000ff]! read source[/color]
[COLOR=#804040][b]read[/b][/color]([COLOR=#ff00ff]20[/color], [COLOR=#804040][b]rec[/b][/color][COLOR=#804040][b]=[/b][/color]inp_rec_nr, [COLOR=#804040][b]iostat[/b][/color][COLOR=#804040][b]=[/b][/color]stat) my_rec
[COLOR=#804040][b]if[/b][/color] (stat [COLOR=#804040][b].ne.[/b][/color] [COLOR=#ff00ff]0[/color]) [COLOR=#804040][b]then[/b][/color]
[COLOR=#804040][b]exit[/b][/color]
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#0000ff]! write destination[/color]
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]unit[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]10[/color], [COLOR=#804040][b]rec[/b][/color][COLOR=#804040][b]=[/b][/color]out_rec_nr) my_rec
[COLOR=#0000ff]![/color]
inp_rec_nr [COLOR=#804040][b]=[/b][/color] inp_rec_nr [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
out_rec_nr [COLOR=#804040][b]=[/b][/color] out_rec_nr [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
[COLOR=#804040][b]end do[/b][/color]
[COLOR=#0000ff]! close input file[/color]
[COLOR=#804040][b]close[/b][/color] ([COLOR=#ff00ff]20[/color])
[COLOR=#804040][b]end do[/b][/color]
[COLOR=#0000ff]! close first (output) file[/color]
[COLOR=#804040][b]close[/b][/color] ([COLOR=#ff00ff]10[/color])
[COLOR=#a020f0]end program[/color] appendfile