[COLOR=#a020f0]program[/color] control_break
[COLOR=#0000ff]! Single-Level Control Break Processing[/color]
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: stat, nr_records
[COLOR=#2e8b57][b] real[/b][/color] :: dummy
[COLOR=#0000ff]! global variables [/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
[COLOR=#0000ff]! open file[/color]
[COLOR=#804040][b]open[/b][/color] ([COLOR=#ff00ff]1[/color], [COLOR=#804040][b]file[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'control_break.dat'[/color], [COLOR=#804040][b]status[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]'old'[/color], [COLOR=#804040][b]iostat[/b][/color][COLOR=#804040][b]=[/b][/color]stat)
[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]write[/b][/color]([COLOR=#804040][b]*[/b][/color],[COLOR=#804040][b]*[/b][/color]) [COLOR=#ff00ff]'File cannot be opened !'[/color]
[COLOR=#804040][b]go to[/b][/color] [COLOR=#ff00ff]99[/color]
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]'(80A)'[/color]) [COLOR=#ff00ff]'*******************************************************'[/color]
[COLOR=#0000ff]! process file[/color]
nr_records [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
date_save [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
[COLOR=#804040][b]do[/b][/color] [COLOR=#804040][b]while[/b][/color] ([COLOR=#ff00ff].true.[/color])
[COLOR=#0000ff]! read record[/color]
[COLOR=#804040][b]read[/b][/color]([COLOR=#ff00ff]1[/color], [COLOR=#804040][b]*[/b][/color], [COLOR=#804040][b]end[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#804040][b]99[/b][/color]) dummy, col02, dummy, dummy, dummy, col06, col07
nr_records [COLOR=#804040][b]=[/b][/color] nr_records [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
[COLOR=#008080]call[/color] process_record
[COLOR=#008080]call[/color] save_keys
[COLOR=#804040][b]enddo[/b][/color]
[COLOR=#804040][b] 99 continue[/b][/color]
[COLOR=#0000ff]! at end print totals[/color]
[COLOR=#008080]call[/color] print_daily_summary
[COLOR=#008080]call[/color] print_total_summary
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]10[/color]) nr_records
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]'(80A)'[/color]) [COLOR=#ff00ff]'*******************************************************'[/color]
[COLOR=#0000ff]! close file[/color]
[COLOR=#804040][b]close[/b][/color]([COLOR=#ff00ff]1[/color])
[COLOR=#6a5acd]10[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'Processing of'[/color],[COLOR=#008080]1X[/color], I0, [COLOR=#008080]1X[/color], [COLOR=#ff00ff]'lines finished.'[/color])
[COLOR=#a020f0]end program[/color] control_break
[COLOR=#a020f0]subroutine[/color] process_record
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! global variables[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
[COLOR=#0000ff]! compute date[/color]
date [COLOR=#804040][b]=[/b][/color] col02[COLOR=#804040][b]/[/b][/color][COLOR=#ff00ff]100[/color]
[COLOR=#0000ff]! if not on first record[/color]
[COLOR=#804040][b]if[/b][/color] (date_save [COLOR=#804040][b].ne.[/b][/color] [COLOR=#ff00ff]0[/color]) [COLOR=#804040][b]then[/b][/color]
[COLOR=#0000ff]! process control break[/color]
[COLOR=#008080]call[/color] process_control_break
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#0000ff]! print line[/color]
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]10[/color]) col02, col06, col07
[COLOR=#0000ff]! compute sum of col06[/color]
[COLOR=#804040][b]if[/b][/color] (col06 [COLOR=#804040][b].ne.[/b][/color] [COLOR=#804040][b]-[/b][/color][COLOR=#ff00ff]9.0[/color]) [COLOR=#804040][b]then[/b][/color]
nr_col06 [COLOR=#804040][b]=[/b][/color] nr_col06 [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
sum_col06 [COLOR=#804040][b]=[/b][/color] sum_col06 [COLOR=#804040][b]+[/b][/color] col06
tnr_col06 [COLOR=#804040][b]=[/b][/color] tnr_col06 [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
tsum_col06 [COLOR=#804040][b]=[/b][/color] tsum_col06 [COLOR=#804040][b]+[/b][/color] col06
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#0000ff]! compute sum of col07[/color]
[COLOR=#804040][b]if[/b][/color] (col07 [COLOR=#804040][b].ne.[/b][/color] [COLOR=#804040][b]-[/b][/color][COLOR=#ff00ff]9.0[/color]) [COLOR=#804040][b]then[/b][/color]
nr_col07 [COLOR=#804040][b]=[/b][/color] nr_col07 [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
sum_col07 [COLOR=#804040][b]=[/b][/color] sum_col07 [COLOR=#804040][b]+[/b][/color] col07
tnr_col07 [COLOR=#804040][b]=[/b][/color] tnr_col07 [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]
tsum_col07 [COLOR=#804040][b]=[/b][/color] tsum_col07 [COLOR=#804040][b]+[/b][/color] col07
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#6a5acd]10[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#008080]5X[/color], I10, [COLOR=#008080]1X[/color], [COLOR=#008080]f8.2[/color], [COLOR=#008080]1X[/color], [COLOR=#008080]f8.2[/color])
[COLOR=#a020f0]end subroutine[/color] process_record
[COLOR=#a020f0]subroutine[/color] process_control_break
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! global variables[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
[COLOR=#804040][b]if[/b][/color] (date [COLOR=#804040][b].ne.[/b][/color] date_save) [COLOR=#804040][b]then[/b][/color]
[COLOR=#008080]call[/color] print_daily_summary
[COLOR=#804040][b]end if[/b][/color]
[COLOR=#a020f0]end subroutine[/color] process_control_break
[COLOR=#a020f0]subroutine[/color] print_daily_summary
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! global variables[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#804040][b]*[/b][/color])
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]10[/color]) date_save
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]20[/color]) sum_col06, sum_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]30[/color]) nr_col06, nr_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]40[/color]) sum_col06[COLOR=#804040][b]/[/b][/color]nr_col06, sum_col07[COLOR=#804040][b]/[/b][/color]nr_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#804040][b]*[/b][/color])
[COLOR=#6a5acd]10[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'* Summary for date'[/color],[COLOR=#008080]1x[/color],I8,[COLOR=#ff00ff]':'[/color])
[COLOR=#6a5acd]20[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'* sum:'[/color],[COLOR=#008080]9x[/color], [COLOR=#008080]f8.2[/color], [COLOR=#008080]1x[/color], [COLOR=#008080]f8.2[/color])
[COLOR=#6a5acd]30[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'* count:'[/color],[COLOR=#008080]7x[/color],I8,[COLOR=#008080]1x[/color],I8)
[COLOR=#6a5acd]40[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'* average:'[/color],[COLOR=#008080]5x[/color], [COLOR=#008080]f8.2[/color], [COLOR=#008080]1x[/color], [COLOR=#008080]f8.2[/color])
[COLOR=#0000ff]! initialize gloabal variables[/color]
sum_col06 [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
sum_col07 [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
nr_col06 [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
nr_col07 [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]0[/color]
[COLOR=#a020f0]end subroutine[/color] print_daily_summary
[COLOR=#a020f0]subroutine[/color] print_total_summary
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! global variables[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]10[/color])
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]20[/color]) tsum_col06, tsum_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]30[/color]) tnr_col06, tnr_col07
[COLOR=#804040][b]write[/b][/color]([COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]40[/color]) tsum_col06[COLOR=#804040][b]/[/b][/color]tnr_col06, tsum_col07[COLOR=#804040][b]/[/b][/color]tnr_col07
[COLOR=#6a5acd]10[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'** Summary for all dates:'[/color])
[COLOR=#6a5acd]20[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'** sum:'[/color],[COLOR=#008080]9x[/color], [COLOR=#008080]f8.2[/color], [COLOR=#008080]1x[/color], [COLOR=#008080]f8.2[/color])
[COLOR=#6a5acd]30[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'** count:'[/color],[COLOR=#008080]7x[/color],I8,[COLOR=#008080]1x[/color],I8)
[COLOR=#6a5acd]40[/color] [COLOR=#804040][b]format[/b][/color]([COLOR=#ff00ff]'** average:'[/color],[COLOR=#008080]5x[/color], [COLOR=#008080]f8.2[/color], [COLOR=#008080]1x[/color], [COLOR=#008080]f8.2[/color])
[COLOR=#a020f0]end subroutine[/color] print_total_summary
[COLOR=#a020f0]subroutine[/color] save_keys
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#0000ff]! global variables[/color]
[COLOR=#2e8b57][b]integer[/b][/color] :: date, date_save, col02, nr_col06, nr_col07, tnr_col06, tnr_col07
[COLOR=#2e8b57][b] real[/b][/color] :: col06, col07, sum_col06, sum_col07, tsum_col06, tsum_col07
[COLOR=#2e8b57][b]common[/b][/color] date, date_save, col02, col06, col07, [COLOR=#804040][b]&[/b][/color]
nr_col06, nr_col07, sum_col06, sum_col07, [COLOR=#804040][b]&[/b][/color]
tnr_col06, tnr_col07, tsum_col06, tsum_col07
date_save [COLOR=#804040][b]=[/b][/color] date
[COLOR=#a020f0]end subroutine[/color] save_keys