11 my ($dist) = /^(.+):\s*$/ or die;
15 %values = ('P' => [.01, .1, .2, .3, .4, .5, .6, .7, .8, .9, .99]);
19 my ($key, $value) = /^\s*(\w+)\s*=\s*(.*)$/;
21 foreach my $s (split (/\s+/, $value)) {
22 if (my ($from, $to, $by) = $s =~ /^(.*):(.*):(.*)$/) {
23 for (my ($x) = $from; $x <= $to; $x += $by) {
24 push (@values, sprintf ("%.2f", $x) + 0);
31 if ($key eq 'funcs') {
35 $values{$key} = \@values;
39 print "DATA LIST LIST/", join (' ', 'P', @vars), ".\n";
40 print "NUMERIC ", join (' ', 'x', @funcs), " (F10.4)\n";
41 print "COMPUTE x = IDF.$dist (", join (', ', 'P', @vars), ").\n";
42 foreach my $func (@funcs) {
43 print "COMPUTE $func = $func.$dist (",
44 join (', ', 'x', @vars), ").\n";
46 my (@print) = ('P', @vars, 'x', @funcs);
47 print "DO IF \$CASENUM = 1.\n";
48 print "PRINT OUTFILE='$dist.out'/'", heading (@print), "'\n";
50 print "PRINT OUTFILE='$dist.out'/",
51 join (' ', @print), ".\n";
52 print "BEGIN DATA.\n";
53 print_all_values (['P', @vars], []);
57 sub print_all_values {
58 my (@vars) = @{$_[0]};
59 my (@assign) = @{$_[1]};
60 if (@vars == @assign) {
61 print join (' ', @assign), "\n";
64 my ($var) = $vars[$#assign];
65 foreach my $value (@{$values{$var}}) {
66 $assign[$#assign] = $value;
67 print_all_values (\@vars, \@assign);
75 $out .= pad_to (shift (@names), 8) while $names[0] ne 'x';
76 $out .= pad_to (shift (@names), 10) while @names;
82 return (' ' x ($n - length ($s))) . $s . ' ';