source: trunk/essentials/sys-apps/gawk/test/hsprint.awk

Last change on this file was 3076, checked in by bird, 18 years ago

gawk 3.1.5

File size: 1.7 KB
Line 
1# Test which attempts to repeat examples of formatted output
2# from "C a reference manual" by Harbison and Steele.
3#
4# In the second series of outputs formats of a type "%5%" are skipped
5# since my old copy of H&S explicitely requires padding ("...%05% will
6# print 0000%..."), whereas Standard says "...the complete conversion
7# specification shall be %%".
8#
9# Michal Jaegermann - michal@phys.ualberta.ca
10
11
12BEGIN {
13 zero = "0";
14 alt = "#";
15 spc = " ";
16 plus = "+";
17 just = "-";
18 value[0] = 45;
19 value[1] = 45;
20 value[2] = 45;
21 value[3] = 12.678;
22 value[4] = 12.678;
23 value[5] = 12.678;
24 value[6] = "zap";
25 value[7] = "*";
26 value[8] = -3.4567;
27 value[9] = -3.4567;
28 value[10]= -3.4567;
29 value[11]= -3.4567;
30 oper[0] = "5d";
31 oper[1] = "5o";
32 oper[2] = "5x";
33 oper[3] = "7.2f";
34 oper[4] = "10.2e";
35 oper[5] = "10.4g";
36 oper[6] = "5s";
37 oper[7] = "5c";
38 oper[8] = "7.1G";
39 oper[9] = "7.2f";
40 oper[10] = "10.2e";
41 oper[11] = "10.4g";
42
43
44 for (r = 0; r < 12; r += 6) {
45 for (j = 2; j > 0; --j) {
46 for (p = 2; p > 0; --p) {
47 for (s = 2; s > 0; --s) {
48 for (a = 2; a > 0; --a) {
49 for (z = 2; z > 0; --z) {
50 fmt = "%" substr(just,j,1) substr(plus,p,1) \
51 substr(spc,s,1) substr(alt,a,1) substr(zero,z,1);
52 fstr = sprintf(\
53 "%6s|%s%s|%s%s|%s%s|%s%s|%s%s|%s%s|\n",
54 fmt,
55 fmt, oper[r],
56 fmt, oper[r+1],
57 fmt, oper[r+2],
58 fmt, oper[r+3],
59 fmt, oper[r+4],
60 fmt, oper[r+5]);
61 printf(fstr, value[r], value[r+1],
62 value[r+2], value[r+3],
63 value[r+4], value[r+5]);
64 }
65 }
66 }
67 }
68 }
69 print "";
70 }
71}
72
73
74
Note: See TracBrowser for help on using the repository browser.