summaryrefslogtreecommitdiff
path: root/test/hsprint.awk
diff options
context:
space:
mode:
authorKim Kibum <kb0929.kim@samsung.com>2012-05-21 17:42:43 +0900
committerKim Kibum <kb0929.kim@samsung.com>2012-05-21 17:42:43 +0900
commit4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d (patch)
tree5431ff1d419d4ee35f8bd3cb3ebd5e334c2a737e /test/hsprint.awk
parentc22a3ed09b982b93feb23655eba7b55fa27885cb (diff)
downloadgawk-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.awk74
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 "";
+ }
+}
+
+
+