|
|
1.1 root 1: awk '
2: # Default values and initial output
3: BEGIN { spreadtext="0"
4: symboltext="circle"
5: fname="XXX"
6: white[" "]=1; white["\t"]=1 # white space
7: print ".G1"
8: print "graph " fname "01"
9: print " ticks off; frame ht 0 wid 0 invis"
10: }
11:
12: # Parse all commands, global first then for each var
13: { rest="" } # rest = input line after $1
14: NF>1 { i=0
15: while ( white[substr($0,++i,1)]);
16: while (!white[substr($0,++i,1)]);
17: rest=substr($0,i+1) }
18: $1=="frames" { frametext=rest }
19: $1=="spread" { spreadtext=$2 }
20: $1=="file" { filetext=$2 }
21: $1=="symbol" { symboltext=rest }
22: $1=="allticks" { alltickstext=rest }
23: $1=="alllog" { wantalllog=1 }
24: $1=="allrange" { allrangeset=1; allrangelo=$2; allrangehi=$3 }
25: $1=="once" { print rest }
26: $1=="eachgraph" { graphtext[++graphcnt]=rest }
27: $1=="eachline" { linetext[++linecnt]=rest }
28: $1=="diagdown" { diagdown=1 }
29:
30: $1=="name" { if (substr(rest,1,1) != "\"") rest="\"" rest "\""
31: var++; nametext[var]=rest
32: }
33: $1=="ticks" { tickstext[var]=rest }
34: $1=="range" { rangeset[var]=1; rangelo[var]=$2; rangehi[var]=$3 }
35: $1=="log" { wantlog[var]=1 }
36: $1=="field" { fieldtext[var]=$2 }
37:
38: # Generate all var**2 graphs
39: END {
40: if (allrangeset) for (i=1; i<=var; i++) {
41: rangeset[i]=1; rangelo[i]=allrangelo; rangehi[i]=allrangehi
42: }
43: if (frametext=="") {
44: wid=((6.5-spreadtext)/var)-spreadtext
45: frametext= "ht " wid " wid " wid
46: }
47: bottomrow=1; if (diagdown) bottomrow=var
48: for (row=1; row<=var; row++) {
49: for (col=1; col<=var; col++) {
50: # graph statement
51: if (col==1) {
52: place = "with .Frame.s at " fname row-1 col\
53: ".Frame.n + (0," spreadtext ")"
54: if (diagdown) place = "with .Frame.n at " fname row-1 col\
55: ".Frame.s - (0," spreadtext ")"
56: } else {
57: place = "with .Frame.w at " fname row col-1\
58: ".Frame.e + (" spreadtext ",0)"
59: }
60: print "graph", fname row col, place
61: # frame statement
62: print " frame " frametext
63: # coord statement
64: s=""
65: if (rangeset[col]) s=s " x " rangelo[col] "," rangehi[col]
66: if (rangeset[row]) s=s " y " rangelo[row] "," rangehi[row]
67: if (wantlog[col]) s=s " log x"
68: if (wantlog[row]) s=s " log y"
69: if (wantalllog) s=s " log log"
70: if (s!="") print " coord" s
71: # ticks statements
72: print " ticks off"
73: if (col==1) print " ticks left " alltickstext, tickstext[row]
74: if (row==bottomrow) print " ticks bot " alltickstext, tickstext[col]
75: # copy file or print label
76: if (row==col) {
77: print " coord abs x 0,1 y 0,1"
78: print " " nametext[row] " at abs .5, .5"
79: if (symboltext!="") {
80: print " copy " filetext " thru @"
81: print " rowval=" fieldtext[row]
82: print " \"\" at rowval, rowval"
83: print " @"
84: }
85: } else {
86: print " rownum=" row "; colnum=" col
87: for (i=1; i<=graphcnt; i++) print " " graphtext[i]
88: print " copy " filetext " thru @"
89: print " rowval=" fieldtext[row] "; colval=" fieldtext[col]
90: for (i=1; i<=linecnt; i++) print " " linetext[i]
91: if (symboltext!="") {
92: print " " symboltext " at colval, rowval"
93: }
94: print " @"
95: }
96: }
97: }
98: print ".G2"
99: }
100: ' $*
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.