#! /n/gnu/bin/gawk -f # Last edited on 1999-11-20 23:28:10 by hcgl BEGIN { usage = ( ARGV[0] " CANDS1 CANDS2 ... CANDSN > CANDSTOT" ); abort = -1; split("", nc); printf "begin PZCandidate.List (format of 99-07-25)\n"; ncands = 0; for(i = 1; i < ARGC; i++) { printf "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"; printf "| file \"%s\"\n", ARGV[i]; nc[i] = read_cands_header(ARGV[i]); printf "| candidates = %d\n", nc[i]; ncands += nc[i]; }; printf "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"; printf "candidates = %d\n", ncands; printf "lambda = %d\n", lambda; for(i=1; i= 0) { exit abort; } function read_cands_header(file, lin, n) { # Reads the "begin" line, copies all comments to # standard output, sets the global variable "lambda", # and returns the number of candidates. getline lin < file; if(lin != "begin PZCandidate.List (format of 99-07-25)") { file_error(file, "missing \"begin\" line"); } getline lin < file; while(lin ~ /^[|]/) { printf "%s\n", lin; getline lin < file; } if (! match(lin, /^candidates *= */)) { file_error(file, "missing \"candidates =\" line"); } n = substr(lin, RLENGTH+1); printf "%s candidates = %s\n", file, n > "/dev/stderr"; getline lin < file; if (! match(lin, /^lambda *= */)) { file_error(file, "missing \"lambda =\" line"); } lambda = substr(lin, RLENGTH+1); return n; } function read_cands_tailer(file, lin) { lin = ""; getline lin < file; if (lin != "end PZCandidate.List") { printf "%s\n", lin > "/dev/stderr"; file_error(file, "missing \"end\" line"); } } function file_error(file, msg) { printf "file \"%s\", line %d: %s\n", file, FNR, msg > "/dev/stderr"; abort = 1; exit abort; }