Blame test/hsprint.awk

Packit 575503
# Test which attempts to repeat examples of formatted output
Packit 575503
# from "C a reference manual" by Harbison and Steele.
Packit 575503
#
Packit 575503
# In the second series of outputs formats of a type "%5%" are skipped
Packit 575503
# since my old copy of H&S explicitely requires padding ("...%05% will
Packit 575503
# print 0000%..."), whereas Standard says "...the complete conversion
Packit 575503
# specification shall be %%".
Packit 575503
#
Packit 575503
# Michal Jaegermann - michal@phys.ualberta.ca
Packit 575503
Packit 575503
Packit 575503
BEGIN {
Packit 575503
    zero = "0";
Packit 575503
    alt  = "#";
Packit 575503
    spc  = " ";
Packit 575503
    plus = "+";
Packit 575503
    just = "-";
Packit 575503
    value[0] = 45;
Packit 575503
    value[1] = 45;
Packit 575503
    value[2] = 45;
Packit 575503
    value[3] = 12.678;
Packit 575503
    value[4] = 12.678;
Packit 575503
    value[5] = 12.678;
Packit 575503
    value[6] = "zap";
Packit 575503
    value[7] = "*";
Packit 575503
    value[8] = -3.4567;
Packit 575503
    value[9] = -3.4567;
Packit 575503
    value[10]= -3.4567;
Packit 575503
    value[11]= -3.4567;
Packit 575503
    oper[0]  = "5d";
Packit 575503
    oper[1]  = "5o";
Packit 575503
    oper[2]  = "5x";
Packit 575503
    oper[3]  = "7.2f";
Packit 575503
    oper[4]  = "10.2e";
Packit 575503
    oper[5]  = "10.4g";
Packit 575503
    oper[6]  = "5s";
Packit 575503
    oper[7]  = "5c";
Packit 575503
    oper[8]  = "7.1G";
Packit 575503
    oper[9]  = "7.2f";
Packit 575503
    oper[10] = "10.2e";
Packit 575503
    oper[11] = "10.4g";
Packit 575503
Packit 575503
    
Packit 575503
    for (r = 0; r < 12; r += 6) {
Packit 575503
	for (j = 2; j > 0; --j) {
Packit 575503
	    for (p = 2; p > 0; --p) {
Packit 575503
		for (s = 2; s > 0; --s) {
Packit 575503
		    for (a = 2; a > 0; --a) {
Packit 575503
			for (z = 2; z > 0; --z) {
Packit 575503
			    fmt = "%" substr(just,j,1) substr(plus,p,1) \
Packit 575503
			      substr(spc,s,1) substr(alt,a,1) substr(zero,z,1);
Packit 575503
			    fstr = sprintf(\
Packit 575503
				     "%6s|%s%s|%s%s|%s%s|%s%s|%s%s|%s%s|\n",
Packit 575503
					   "%" fmt, 
Packit 575503
					   fmt, oper[r],
Packit 575503
					   fmt, oper[r+1],
Packit 575503
					   fmt, oper[r+2],
Packit 575503
					   fmt, oper[r+3],
Packit 575503
					   fmt, oper[r+4],
Packit 575503
					   fmt, oper[r+5]);
Packit 575503
			    printf(fstr, value[r],   value[r+1],
Packit 575503
					 value[r+2], value[r+3],
Packit 575503
					 value[r+4], value[r+5]);
Packit 575503
			}
Packit 575503
		    }
Packit 575503
		}
Packit 575503
	    }
Packit 575503
	}
Packit 575503
	print "";
Packit 575503
    }
Packit 575503
}