$seekForChannels = false;
$firstRun = true;
$saveline = "";
sub scanline {
	if ($line =~ /PROC\s+(.+?)\s*\((.*)\).*/) {
		if ($firstRun eq false) {
			print "$procname ";
			for $arg (@list){
				print "$parameter{$arg}";
			}
			print "\n";
			@list = ();
			@parameter = ();
		}
		$procname = $1;
		@parameter = split(",",$2);
		$c = 0;
		for $par (@parameter) {
			if ($par =~ /^\s*CHAN\s+OF\s+.+?\s+(.+?)\s*$/) {
				$list[$c] = $1;
				$parameter{$1} = '-';
			} elsif ($par =~ /^\s*.+?\s+(.+?)\s*$/ ) {
				$list[$c] = $1;
				$parameter{$1} = '-';
			} elsif ($par =~ /^\s*(.+?)\s*$/ ) {
				$guessChannel = $1;
				$d = 1;
				$pre = $parameter[$c-$d];
				while ($pre =~ /^\s*.+?\s+.+?\s*$/ ) {
					$d++;
					$pre = $parameter[$c-$d];
				}
				$parameter{$guessChannel} = '-';
				$list[$c] = $guessChannel;
                        }
			$c++;
		}
		$seekForChannels = true;
		$firstRun = false;
		$saveline = "";
		#next;
	}
}
while ($line = <STDIN>) {
	if ($line =~ /PROC\s+(.+?)\s*\((.*)\).*/) {
		scanline();
	}
        elsif ($line =~ /PROC/) {
		$saveline = $line;
	}
	elsif ($saveline =~ /.+/) {
		$saveline = join('',$saveline,$line);
                $saveline =~ tr/\012//d;
		$line = $saveline;
		scanline();
	}
	elsif ($seekForChannels eq true) {
		if ($line =~ /^\s*(.+?)\s*([!|?])/) {
			$channel = $1;
			if ($2 =~ /!/) {
				$parameter{$channel} = '!';
			}
			if ($2 =~ /\?/) {
				$parameter{$channel} = '?';
			}
		}
	}
}
print "$procname ";
for $arg (@list){
	print "$parameter{$arg}";
}
print "\n";
