1 AT_BANNER([data input (data-in)])
3 m4_divert_push([PREPARE_TESTS])
5 cat > my-rand.pl <<'EOF'
6 # This random number generator and the test for it below are drawn
7 # from Park and Miller, "Random Number Generators: Good Ones are Hard
8 # to Come By", Communications of the ACM 31:10 (October 1988). It is
9 # documented to function properly on systems with a 46-bit or longer
10 # real significand, which includes systems that have 64-bit IEEE reals
11 # (with 53-bit significand). The test should catch any systems for
12 # which this is not true, in any case.
19 my ($tmp) = $a * $seed;
20 $seed = $tmp - $m * int ($tmp / $m);
21 return $seed % $modulo;
24 cat > test-my-rand.pl <<'EOF'
29 my_rand (1) foreach 1...10000;
31 die $seed if $seed != 1043618065;
36 cat > date-in.pl << 'EOF'
44 my ($fmt_name, @templates) = @ARGV;
46 my @dates = (#yyyy mm dd jjj HH MM SS
47 [1648, 6, 10, 162, 0, 0, 0],
48 [1680, 6, 30, 182, 4, 50, 38],
49 [1716, 7, 24, 206, 12, 31, 35],
50 [1768, 6, 19, 171, 12, 47, 53],
51 [1819, 8, 2, 214, 1, 26, 0],
52 [1839, 3, 27, 86, 20, 58, 11],
53 [1903, 4, 19, 109, 7, 36, 5],
54 [1929, 8, 25, 237, 15, 43, 49],
55 [1941, 9, 29, 272, 4, 25, 9],
56 [1943, 4, 19, 109, 6, 49, 27],
57 [1943, 10, 7, 280, 2, 57, 52],
58 [1992, 3, 17, 77, 16, 45, 44],
59 [1996, 2, 25, 56, 21, 30, 57],
60 [1941, 9, 29, 272, 4, 25, 9],
61 [1943, 4, 19, 109, 6, 49, 27],
62 [1943, 10, 7, 280, 2, 57, 52],
63 [1992, 3, 17, 77, 16, 45, 44],
64 [1996, 2, 25, 56, 21, 30, 57],
65 [2038, 11, 10, 314, 22, 30, 4],
66 [2094, 7, 18, 199, 1, 56, 51]);
68 open (SYNTAX, '>', "$fmt_name.sps") or die "$fmt_name.sps: create: $!\n";
69 print SYNTAX "SET EPOCH 1930.\n";
70 print SYNTAX "DATA LIST NOTABLE FILE='$fmt_name.in'/$fmt_name 1-40 ($fmt_name).\n";
71 print SYNTAX "PRINT OUTFILE='$fmt_name.out'/$fmt_name (F16.2).\n";
72 print SYNTAX "EXECUTE.\n";
75 my ($fn) = "$fmt_name.in";
76 open (DATA, '>', $fn) or die "$fn: create: $!\n";
78 for my $template (@templates) {
79 for my $date (@dates) {
80 print_date_with_template ($date, $template) for 1...10;
85 sub print_date_with_template {
86 my ($date, $template) = @_;
87 my ($year, $month, $day, $julian, $hour, $minute, $second) = @$date;
88 my ($quarter) = int (($month - 1) / 3) + 1;
89 my ($week) = int (($julian - 1) / 7) + 1;
90 my (@year_types) = ('full');
91 push (@year_types, '2digit') if $year >= 1930 && $year < 2030;
92 for my $c (split ('', $template)) {
94 printf (+pick ('%d', '%02d'), $day);
96 my ($type) = pick ('arabic', 'roman', 'abbrev', 'full');
97 if ($type eq 'arabic') {
98 printf (+pick ('%d', '%02d'), $month);
99 } elsif ($type eq 'roman') {
100 my ($mmm) = ('i', 'ii', 'iii',
103 'x', 'xi', 'xii')[$month - 1];
104 print_rand_case ($mmm);
105 } elsif ($type eq 'abbrev') {
106 my ($mmm) = qw (jan feb mar apr may jun
107 jul aug sep oct nov dec)[$month - 1];
108 print_rand_case ($mmm);
109 } elsif ($type eq 'full') {
110 my ($mmm) = qw (january february march
112 july august september
113 october november december)[$month - 1];
114 print_rand_case ($mmm);
118 } elsif ($c eq 'y') {
119 my ($type) = pick (@year_types);
120 if ($type eq '2digit') {
121 printf (+pick ('%d', '%02d'), $year % 100);
122 } elsif ($type eq 'full') {
127 } elsif ($c eq 'j') {
128 my ($type) = pick (@year_types);
129 if ($type eq '2digit') {
130 printf ("%02d%03d", $year % 100, $julian);
131 } elsif ($type eq 'full') {
132 printf ("%04d%03d", $year, $julian);
136 } elsif ($c eq 'q') {
138 } elsif ($c eq 'w') {
140 } elsif ($c eq 'H') {
141 printf (+pick ('%d', '%02d'), $hour);
142 } elsif ($c eq 'M') {
143 printf (+pick ('%d', '%02d'), $minute);
144 } elsif ($c eq 'S') {
145 printf (+pick ('%d', '%02d'), $second);
146 } elsif ($c eq '-') {
147 print +pick (' ', '-', '.', ',', '/');
148 } elsif ($c eq ':') {
149 print +pick (' ', ':');
150 } elsif ($c eq ' ') {
152 } elsif ($c eq 'Q') {
153 maybe_print_space ();
154 print_rand_case ('q');
155 maybe_print_space ();
156 } elsif ($c eq 'W') {
157 maybe_print_space ();
158 print_rand_case ('wk');
159 maybe_print_space ();
160 } elsif ($c eq '+') {
161 print +pick ('', '-', '+');
169 sub print_rand_case {
171 my ($case) = pick (qw (uc lc tc));
174 } elsif ($case eq 'lc') {
176 } elsif ($case eq 'tc') {
183 sub maybe_print_space {
184 print +pick ('', ' ');
188 return $_[int (my_rand ($#_ + 1))];
192 m4_divert_pop([PREPARE_TESTS])
194 AT_SETUP([numeric input formats])
195 AT_KEYWORDS([data-in])
197 AT_CHECK([$PERL test-my-rand.pl])
207 for my $number (0, 1, .5, .015625, 123) {
208 my ($base_exp) = floor ($number ? log10 ($number) : 0);
209 for my $offset (-3...3) {
210 my ($exponent) = $base_exp + $offset;
211 my ($fraction) = $number / 10**$offset;
213 permute_zeros ($fraction, $exponent);
218 my ($fraction, $exponent) = @_;
220 my ($frac_rep) = sprintf ("%f", $fraction);
221 my ($leading_zeros) = length (($frac_rep =~ /^(0*)/)[0]);
222 my ($trailing_zeros) = length (($frac_rep =~ /(\.?0*)$/)[0]);
223 for my $i (0...$leading_zeros) {
224 for my $j (0...$trailing_zeros) {
225 my ($trimmed) = substr ($frac_rep, $i,
226 length ($frac_rep) - $i - $j);
227 next if $trimmed eq '.' || $trimmed eq '';
229 permute_commas ($trimmed, $exponent);
235 my ($frac_rep, $exponent) = @_;
236 permute_dot_comma ($frac_rep, $exponent);
237 my ($pos) = int (my_rand (length ($frac_rep) + 1));
238 $frac_rep = substr ($frac_rep, 0, $pos) . "," . substr ($frac_rep, $pos);
239 permute_dot_comma ($frac_rep, $exponent);
242 sub permute_dot_comma {
243 my ($frac_rep, $exponent) = @_;
244 permute_exponent_syntax ($frac_rep, $exponent);
245 if ($frac_rep =~ /[,.]/) {
246 $frac_rep =~ tr/.,/,./;
247 permute_exponent_syntax ($frac_rep, $exponent);
251 sub permute_exponent_syntax {
252 my ($frac_rep, $exponent) = @_;
254 if ($exponent == 0) {
255 @exp_reps = pick ('', 'e0', 'e-0', 'e+0', '-0', '+0');
256 } elsif ($exponent > 0) {
257 @exp_reps = pick ("e$exponent", "e+$exponent", "+$exponent");
259 my ($abs_exp) = -$exponent;
260 @exp_reps = pick ("e-$abs_exp", , "e-$abs_exp", "-$abs_exp");
262 permute_sign_and_affix ($frac_rep, $_) foreach @exp_reps;
265 sub permute_sign_and_affix {
266 my ($frac_rep, $exp_rep) = @_;
267 for my $prefix (pick ('', '$'),
268 pick ('-', '-$', '$-', '$-$'),
269 pick ('+', '+$', '$+', '$+$')) {
270 for my $suffix ('', '%') {
271 permute_spaces ("$prefix$frac_rep$exp_rep$suffix");
278 $s =~ s/([-+\$e%])/ $1 /g;
279 my (@fields) = split (' ', $s);
280 print join ('', @fields), "\n";
283 my ($pos) = int (my_rand ($#fields)) + 1;
284 print join ('', @fields[0...$pos - 1]);
286 print join ('', @fields[$pos...$#fields]);
292 return $_[int (my_rand ($#_ + 1))];
295 AT_CHECK([$PERL num-in.pl > num-in.data])
296 AT_DATA([num-in.sps], [dnl
299 SET MXWARNS=10000000.
300 DATA LIST FILE='num-in.data' NOTABLE/
307 PRINT OUTFILE='num-in.out'/all (6f10.4).
310 AT_CHECK([pspp -O format=csv num-in.sps])
311 AT_CHECK([gzip -cd < $top_srcdir/tests/data/num-in.expected.gz > expout])
312 AT_CHECK([cat num-in.out], [0], [expout])
315 dnl Some very old version of PSPP crashed reading big numbers,
316 dnl so this checks for regressions.
317 AT_SETUP([reading big numbers])
318 AT_KEYWORDS([data-in])
319 AT_DATA([bignum.txt], [dnl
350 199999999999999999999
351 1234567890123456789012
352 19999999999999999999999
353 123456789012345678901234
354 1999999999999999999999999
355 12345678901234567890123456
356 199999999999999999999999999
357 1234567890123456789012345678
358 19999999999999999999999999999
359 123456789012345678901234567890
360 1999999999999999999999999999999
361 12345678901234567890123456789012
362 199999999999999999999999999999999
363 1234567890123456789012345678901234
364 19999999999999999999999999999999999
365 123456789012345678901234567890123456
366 1999999999999999999999999999999999999
367 12345678901234567890123456789012345678
368 199999999999999999999999999999999999999
369 1234567890123456789012345678901234567890
370 1999999999999999999999999999999999999999
384 AT_DATA([bignum.sps], [dnl
385 title 'Test use of big numbers'.
387 *** Do the portable output.
388 data list file='bignum.txt'/BIGNUM 1-40.
391 *** Do the nonportable output for fun.
394 AT_CHECK([pspp -o pspp.csv bignum.sps], [0], [ignore])
397 AT_SETUP([DATE input format])
398 AT_KEYWORDS([data-in])
400 AT_CHECK([$PERL test-my-rand.pl])
401 AT_CHECK([$PERL date-in.pl date d-m-y])
402 AT_CHECK([test -s date.sps])
403 AT_CHECK([test -s date.in])
404 AT_CHECK([pspp -O format=csv date.sps])
405 AT_CHECK([cat date.out], [0], [dnl
609 AT_SETUP([ADATE input format])
610 AT_KEYWORDS([data-in])
612 AT_CHECK([$PERL test-my-rand.pl])
613 AT_CHECK([$PERL date-in.pl adate m-d-y])
614 AT_CHECK([test -s adate.sps])
615 AT_CHECK([test -s adate.in])
616 AT_CHECK([pspp -O format=csv adate.sps])
617 AT_CHECK([cat adate.out], [0], [dnl
821 AT_SETUP([EDATE input format])
822 AT_KEYWORDS([data-in])
824 AT_CHECK([$PERL test-my-rand.pl])
825 AT_CHECK([$PERL date-in.pl edate d-m-y])
826 AT_CHECK([test -s edate.sps])
827 AT_CHECK([test -s edate.in])
828 AT_CHECK([pspp -O format=csv edate.sps])
829 AT_CHECK([cat edate.out], [0], [dnl
1033 AT_SETUP([JDATE input format])
1034 AT_KEYWORDS([data-in])
1036 AT_CHECK([$PERL test-my-rand.pl])
1037 AT_CHECK([$PERL date-in.pl jdate j])
1038 AT_CHECK([test -s jdate.sps])
1039 AT_CHECK([test -s jdate.in])
1040 AT_CHECK([pspp -O format=csv jdate.sps])
1041 AT_CHECK([cat jdate.out], [0], [dnl
1245 AT_SETUP([SDATE input format])
1246 AT_KEYWORDS([data-in])
1248 AT_CHECK([$PERL test-my-rand.pl])
1249 AT_CHECK([$PERL date-in.pl sdate y-m-d])
1250 AT_CHECK([test -s sdate.sps])
1251 AT_CHECK([test -s sdate.in])
1252 AT_CHECK([pspp -O format=csv sdate.sps])
1253 AT_CHECK([cat sdate.out], [0], [dnl
1457 AT_SETUP([QYR input format])
1458 AT_KEYWORDS([data-in])
1460 AT_CHECK([$PERL test-my-rand.pl])
1461 AT_CHECK([$PERL date-in.pl qyr qQy])
1462 AT_CHECK([test -s qyr.sps])
1463 AT_CHECK([test -s qyr.in])
1464 AT_CHECK([pspp -O format=csv qyr.sps])
1465 AT_CHECK([cat qyr.out], [0], [dnl
1669 AT_SETUP([MOYR input format])
1670 AT_KEYWORDS([data-in])
1672 AT_CHECK([$PERL test-my-rand.pl])
1673 AT_CHECK([$PERL date-in.pl moyr m-y])
1674 AT_CHECK([test -s moyr.sps])
1675 AT_CHECK([test -s moyr.in])
1676 AT_CHECK([pspp -O format=csv moyr.sps])
1677 AT_CHECK([cat moyr.out], [0], [dnl
1881 AT_SETUP([WKYR input format])
1882 AT_KEYWORDS([data-in])
1884 AT_CHECK([$PERL test-my-rand.pl])
1885 AT_CHECK([$PERL date-in.pl wkyr wWy])
1886 AT_CHECK([test -s wkyr.sps])
1887 AT_CHECK([test -s wkyr.in])
1888 AT_CHECK([pspp -O format=csv wkyr.sps])
1889 AT_CHECK([cat wkyr.out], [0], [dnl
2093 AT_SETUP([DATETIME input format])
2094 AT_KEYWORDS([data-in])
2096 AT_CHECK([$PERL test-my-rand.pl])
2097 AT_CHECK([$PERL date-in.pl datetime "d-m-y +H:M" "d-m-y +H:M:S"])
2098 AT_CHECK([test -s datetime.sps])
2099 AT_CHECK([test -s datetime.in])
2100 AT_CHECK([pspp -O format=csv datetime.sps])
2101 AT_CHECK([cat datetime.out], [0], [dnl
2506 AT_SETUP([binary and hexadecimal input (IB, PIB, and PIBHEX formats)])
2507 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > binhex-in.data])
2508 AT_CHECK([wc -c < binhex-in.data], [0], [131072
2510 AT_DATA([binhex-in.sps], [dnl
2513 SET MXWARNS=10000000.
2514 SET MXERRS=10000000.
2515 FILE HANDLE data/NAME='binhex-in.data'/MODE=IMAGE/LRECL=2.
2516 DATA LIST FILE=data NOTABLE/ib 1-2 (IB) pib 1-2 (PIB) pibhex 1-2 (PIBHEX).
2517 COMPUTE x=$CASENUM - 1.
2518 PRINT OUTFILE='binhex-in.out'/x (PIBHEX4) ' ' ib pib pibhex.
2521 AT_CHECK([gzip -cd < $top_srcdir/tests/data/binhex-in.expected.cmp.gz | \
2522 $PERL -pe "printf ' %04X ', $.-1" > expout])
2523 AT_CHECK([pspp -O format=csv binhex-in.sps], [0])
2524 AT_CHECK([cat binhex-in.out], [0], [expout])
2527 AT_SETUP([BCD input (P and PK formats)])
2528 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > bcd-in.data])
2529 AT_CHECK([wc -c < bcd-in.data], [0], [131072
2531 AT_DATA([bcd-in.sps], [dnl
2533 SET MXWARNS=10000000.
2534 SET MXERRS=10000000.
2535 FILE HANDLE data/NAME='bcd-in.data'/MODE=IMAGE/LRECL=2.
2536 DATA LIST FILE=data NOTABLE/p 1-2 (P) pk 1-2 (PK).
2537 COMPUTE x=$CASENUM - 1.
2538 PRINT OUTFILE='bcd-in.out'/x (PIBHEX4) ' ' P PK.
2541 AT_CHECK([gzip -cd < $top_srcdir/tests/data/bcd-in.expected.cmp.gz | \
2542 $PERL -pe "printf ' %04X ', $.-1" > expout])
2543 AT_CHECK([pspp -O format=csv bcd-in.sps])
2544 AT_CHECK([cat bcd-in.out], [0], [expout])
2547 AT_SETUP([legacy input (N and Z formats)])
2548 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > legacy-in.data])
2549 AT_CHECK([wc -c < legacy-in.data], [0], [131072
2551 AT_DATA([legacy-in.sps], [dnl
2553 SET MXWARNS=10000000.
2554 SET MXERRS=10000000.
2555 FILE HANDLE data/NAME='legacy-in.data'/MODE=IMAGE/LRECL=2.
2556 DATA LIST NOTABLE FILE=data/n 1-2 (N) z 1-2 (z).
2557 COMPUTE x=$CASENUM - 1.
2558 PRINT OUTFILE='legacy-in.out'/x (PIBHEX4) ' ' N Z.
2561 AT_CHECK([gzip -cd < $top_srcdir/tests/data/legacy-in.expected.cmp.gz | \
2562 $PERL -pe "printf ' %04X ', $.-1" > expout])
2563 AT_CHECK([pspp -O format=csv legacy-in.sps])
2564 AT_CHECK([cat legacy-in.out], [0], [expout])
2567 AT_SETUP([WKDAY input format])
2568 AT_DATA([wkday.sps], [dnl
2569 DATA LIST NOTABLE /wkday2 1-2 (wkday)
2577 wkday10 1-10 (wkday).
2590 FORMATS ALL (WKDAY2).
2591 PRINT OUTFILE='wkday.out'/ALL.
2594 AT_CHECK([pspp -O format=csv wkday.sps], [0], [dnl
2595 wkday.sps:20.1-2: warning: Data for variable wkday2 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2597 wkday.sps:20.1-3: warning: Data for variable wkday3 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2599 wkday.sps:20.1-4: warning: Data for variable wkday4 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2601 wkday.sps:20.1-5: warning: Data for variable wkday5 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2603 wkday.sps:20.1-6: warning: Data for variable wkday6 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2605 wkday.sps:20.1-7: warning: Data for variable wkday7 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2607 wkday.sps:20.1-8: warning: Data for variable wkday8 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2609 wkday.sps:20.1-9: warning: Data for variable wkday9 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2611 wkday.sps:20.1-10: warning: Data for variable wkday10 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
2613 AT_CHECK([cat wkday.out], [0], [dnl
2614 . . . . . . . . . @&t@
2615 . . . . . . . . . @&t@
2616 MO MO MO MO MO MO MO MO MO @&t@
2617 TU TU TU TU TU TU TU TU TU @&t@
2618 WE WE WE WE WE WE WE WE WE @&t@
2619 TH TH TH TH TH TH TH TH TH @&t@
2620 FR FR FR FR FR FR FR FR FR @&t@
2621 SA SA SA SA SA SA SA SA SA @&t@
2622 SU SU SU SU SU SU SU SU SU @&t@
2623 . . . . . . . . . @&t@
2627 AT_SETUP([MONTH input format])
2628 AT_DATA([month.sps], [dnl
2629 DATA LIST NOTABLE /month3 1-3 (MONTH)
2636 month10 1-10 (MONTH).
2685 FORMATS ALL (MONTH3).
2686 PRINT OUTFILE='month.out'/ALL.
2689 AT_CHECK([pspp -O format=csv month.sps], [0], [dnl
2690 month.sps:15.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2692 month.sps:15.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2694 month.sps:15.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2696 month.sps:15.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2698 month.sps:15.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2700 month.sps:15.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2702 month.sps:15.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2704 month.sps:26.1-3: warning: Data for variable month3 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2706 month.sps:26.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2708 month.sps:26.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2710 month.sps:26.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2712 month.sps:26.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2714 month.sps:26.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2716 month.sps:26.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2718 month.sps:26.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2720 month.sps:39.1-3: warning: Data for variable month3 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2722 month.sps:39.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2724 month.sps:39.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2726 month.sps:39.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2728 month.sps:39.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2730 month.sps:39.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2732 month.sps:39.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2734 month.sps:39.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
2736 AT_CHECK([cat month.out], [0], [dnl
2737 . . . . . . . . @&t@
2738 . . . . . . . . @&t@
2739 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
2740 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
2741 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
2742 MAR . . . . . . . @&t@
2743 APR APR APR APR APR APR APR APR @&t@
2744 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
2745 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
2746 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
2747 JUL AUG AUG AUG AUG AUG AUG AUG @&t@
2748 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
2749 JUL AUG AUG AUG AUG AUG AUG AUG @&t@
2750 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
2751 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
2752 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
2753 . . . . . . . . @&t@
2754 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
2755 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
2756 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
2757 APR APR APR APR APR APR APR APR @&t@
2758 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
2759 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
2760 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
2761 AUG AUG AUG AUG AUG AUG AUG AUG @&t@
2762 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
2763 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
2764 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
2765 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
2766 . . . . . . . . @&t@
2767 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
2768 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
2769 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
2770 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
2771 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
2772 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
2773 APR APR APR APR APR APR APR APR @&t@
2774 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
2775 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
2776 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
2777 AUG AUG AUG AUG AUG AUG AUG AUG @&t@
2778 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
2779 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
2780 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
2781 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
2782 DEC DEC DEC DEC DEC DEC DEC DEC @&t@