Setting filename in BEGIN
BEGIN ブロックで filename を指定できるかという件です。
BEGIN { ARGV[1]="filename" } { print $0 }
で、やるとするなら、
BEGIN { ARGV[ARGC++]="filename" } { print $0 }
なんですが、こうしないと結局標準入力が優先されてしまうようです。
でも、これって BEGIN ブロックで、
BEGIN { InFile = "filename"; while ( getline < InFile > 0 ) { ほんにゃらら; } }
というのがスマートだと思いますけどね。