#!/usr/bin/gawk -f

BEGIN {
  types = 4;
  name[0] = "a";
  name[1] = "b";
  name[2] = "c";
  name[3] = "d";

  for (item[0] = 0; item[0] < 4; item[0]++) {
    for (item[1] = 0; item[1] < 4; item[1]++) {
      for (item[2] = 0; item[2] < 4; item[2]++) {
	for (item[3] = 0; item[3] < 4; item[3]++) {
	  for (item[4] = 0; item[4] < 4; item[4]++) {
	    printf("name: {");
	    for (i = 0; i < 5; i++) {
	      if (i > 0) printf(" ");
	      printf("%s", name[item[i]]);
	    }
	    printf("} 5");
	    for (i = 0; i < 5; i++) {
	      printf("\ni: %d", item[i]);
	      
	      printf("\nt:");
	      for (j = 0; j <= i; j++)
		printf(" %d", item[j] + j * types);
	    }
	    printf(";\n");
	  }
	}
      }
    }
  }
}


syntax highlighted by Code2HTML, v. 0.9.1