diff options
author | Kim Kibum <kb0929.kim@samsung.com> | 2012-05-21 17:42:43 +0900 |
---|---|---|
committer | Kim Kibum <kb0929.kim@samsung.com> | 2012-05-21 17:42:43 +0900 |
commit | 4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d (patch) | |
tree | 5431ff1d419d4ee35f8bd3cb3ebd5e334c2a737e /test/hsprint.awk | |
parent | c22a3ed09b982b93feb23655eba7b55fa27885cb (diff) | |
download | gawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.tar.gz gawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.tar.bz2 gawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.zip |
Upload Tizen:Base source
Diffstat (limited to 'test/hsprint.awk')
-rw-r--r-- | test/hsprint.awk | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/hsprint.awk b/test/hsprint.awk new file mode 100644 index 0000000..d17cede --- /dev/null +++ b/test/hsprint.awk @@ -0,0 +1,74 @@ +# Test which attempts to repeat examples of formatted output +# from "C a reference manual" by Harbison and Steele. +# +# In the second series of outputs formats of a type "%5%" are skipped +# since my old copy of H&S explicitely requires padding ("...%05% will +# print 0000%..."), whereas Standard says "...the complete conversion +# specification shall be %%". +# +# Michal Jaegermann - michal@phys.ualberta.ca + + +BEGIN { + zero = "0"; + alt = "#"; + spc = " "; + plus = "+"; + just = "-"; + value[0] = 45; + value[1] = 45; + value[2] = 45; + value[3] = 12.678; + value[4] = 12.678; + value[5] = 12.678; + value[6] = "zap"; + value[7] = "*"; + value[8] = -3.4567; + value[9] = -3.4567; + value[10]= -3.4567; + value[11]= -3.4567; + oper[0] = "5d"; + oper[1] = "5o"; + oper[2] = "5x"; + oper[3] = "7.2f"; + oper[4] = "10.2e"; + oper[5] = "10.4g"; + oper[6] = "5s"; + oper[7] = "5c"; + oper[8] = "7.1G"; + oper[9] = "7.2f"; + oper[10] = "10.2e"; + oper[11] = "10.4g"; + + + for (r = 0; r < 12; r += 6) { + for (j = 2; j > 0; --j) { + for (p = 2; p > 0; --p) { + for (s = 2; s > 0; --s) { + for (a = 2; a > 0; --a) { + for (z = 2; z > 0; --z) { + fmt = "%" substr(just,j,1) substr(plus,p,1) \ + substr(spc,s,1) substr(alt,a,1) substr(zero,z,1); + fstr = sprintf(\ + "%6s|%s%s|%s%s|%s%s|%s%s|%s%s|%s%s|\n", + fmt, + fmt, oper[r], + fmt, oper[r+1], + fmt, oper[r+2], + fmt, oper[r+3], + fmt, oper[r+4], + fmt, oper[r+5]); + printf(fstr, value[r], value[r+1], + value[r+2], value[r+3], + value[r+4], value[r+5]); + } + } + } + } + } + print ""; + } +} + + + |