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 ($#_
195 cat > time-in.pl << 'EOF'
203 my ($skip, $fmt_name, @templates) = @ARGV;
205 my_rand (1) foreach 1...$skip;
207 my @times = (# D HH MM SS
215 [ 52, 15, 43, 49.27],
219 [555, 16, 45, 44.12],
220 [120, 21, 30, 57.27],
227 [ 22, 1, 56, 51.18]);
229 open (SYNTAX, '>', "$fmt_name.sps") or die "$fmt_name.sps: create: $!\n";
230 print SYNTAX "DATA LIST NOTABLE FILE='$fmt_name.data'/$fmt_name 1-40 ($fmt_name).\n";
231 print SYNTAX "PRINT OUTFILE='$fmt_name.out'/$fmt_name (F16.2).\n";
232 print SYNTAX "EXECUTE.\n";
235 my ($fn) = "$fmt_name.data";
236 open (DATA, '>', $fn) or die "$fn: create: $!\n";
238 for my $template (@templates) {
239 for my $time (@times) {
240 print_time_with_template ($time, $template) for 1...10;
245 sub print_time_with_template {
246 my ($time, $template) = @_;
247 my ($day, $hour, $minute, $second) = @$time;
248 for my $c (split ('', $template)) {
250 print +pick ('', '-', '+');
251 } elsif ($c eq 'D') {
252 printf (+pick ('%d', '%02d'), $day);
254 } elsif ($c eq 'H') {
255 printf (+pick ('%d', '%02d'), $hour + 24 * $day);
256 } elsif ($c eq 'M') {
257 printf (+pick ('%d', '%02d'), $minute);
258 } elsif ($c eq 'S') {
259 printf (+pick ('%.0f', '%02.0f', '%.1f', '%.2f'), $second);
260 } elsif ($c eq ':') {
261 print +pick (' ', ':');
262 } elsif ($c eq ' ') {
272 return $_[int (my_rand ($#_
277 m4_divert_pop([PREPARE_TESTS])
279 AT_SETUP([numeric input formats])
280 AT_KEYWORDS([data-in])
282 AT_CHECK([$PERL test-my-rand.pl])
292 for my $number (0, 1, .5, .015625, 123) {
293 my ($base_exp) = floor ($number ? log10 ($number) : 0);
294 for my $offset (-3...3) {
295 my ($exponent) = $base_exp + $offset;
296 my ($fraction) = $number / 10**$offset;
298 permute_zeros ($fraction, $exponent);
303 my ($fraction, $exponent) = @_;
305 my ($frac_rep) = sprintf ("%f", $fraction);
306 my ($leading_zeros) = length (($frac_rep =~ /^(0*)/)[0]);
307 my ($trailing_zeros) = length (($frac_rep =~ /(\.?0*)$/)[0]);
308 for my $i (0...$leading_zeros) {
309 for my $j (0...$trailing_zeros) {
310 my ($trimmed) = substr ($frac_rep, $i,
311 length ($frac_rep) - $i - $j);
312 next if $trimmed eq '.' || $trimmed eq '';
314 permute_commas ($trimmed, $exponent);
320 my ($frac_rep, $exponent) = @_;
321 permute_dot_comma ($frac_rep, $exponent);
322 my ($pos) = int (my_rand (length ($frac_rep) + 1));
323 $frac_rep = substr ($frac_rep, 0, $pos) . "," . substr ($frac_rep, $pos);
324 permute_dot_comma ($frac_rep, $exponent);
327 sub permute_dot_comma {
328 my ($frac_rep, $exponent) = @_;
329 permute_exponent_syntax ($frac_rep, $exponent);
330 if ($frac_rep =~ /[,.]/) {
331 $frac_rep =~ tr/.,/,./;
332 permute_exponent_syntax ($frac_rep, $exponent);
336 sub permute_exponent_syntax {
337 my ($frac_rep, $exponent) = @_;
339 if ($exponent == 0) {
340 @exp_reps = pick ('', 'e0', 'e-0', 'e+0', '-0', '+0');
341 } elsif ($exponent > 0) {
342 @exp_reps = pick ("e$exponent", "e+$exponent", "+$exponent");
344 my ($abs_exp) = -$exponent;
345 @exp_reps = pick ("e-$abs_exp", , "e-$abs_exp", "-$abs_exp");
347 permute_sign_and_affix ($frac_rep, $_) foreach @exp_reps;
350 sub permute_sign_and_affix {
351 my ($frac_rep, $exp_rep) = @_;
352 for my $prefix (pick ('', '$'),
353 pick ('-', '-$', '$-', '$-$'),
354 pick ('+', '+$', '$+', '$+$')) {
355 for my $suffix ('', '%') {
356 permute_spaces ("$prefix$frac_rep$exp_rep$suffix");
363 $s =~ s/([-+\$e%])/ $1 /g;
364 my (@fields) = split (' ', $s);
365 print join ('', @fields), "\n";
368 my ($pos) = int (my_rand ($#fields)) + 1;
369 print join ('', @fields[0...$pos - 1]);
371 print join ('', @fields[$pos...$#fields]);
377 return $_[int (my_rand ($#_ + 1))];
380 AT_CHECK([$PERL num-in.pl > num-in.data])
381 AT_DATA([num-in.sps], [dnl
384 SET MXWARNS=10000000.
385 DATA LIST FILE='num-in.data' NOTABLE/
392 PRINT OUTFILE='num-in.out'/all (6f10.4).
395 AT_CHECK([pspp -O format=csv num-in.sps])
396 AT_CHECK([gzip -cd < $top_srcdir/tests/data/num-in.expected.gz > expout])
397 AT_CHECK([cat num-in.out], [0], [expout])
400 dnl Some very old version of PSPP crashed reading big numbers,
401 dnl so this checks for regressions.
402 AT_SETUP([reading big numbers])
403 AT_KEYWORDS([data-in])
404 AT_DATA([bignum.txt], [dnl
435 199999999999999999999
436 1234567890123456789012
437 19999999999999999999999
438 123456789012345678901234
439 1999999999999999999999999
440 12345678901234567890123456
441 199999999999999999999999999
442 1234567890123456789012345678
443 19999999999999999999999999999
444 123456789012345678901234567890
445 1999999999999999999999999999999
446 12345678901234567890123456789012
447 199999999999999999999999999999999
448 1234567890123456789012345678901234
449 19999999999999999999999999999999999
450 123456789012345678901234567890123456
451 1999999999999999999999999999999999999
452 12345678901234567890123456789012345678
453 199999999999999999999999999999999999999
454 1234567890123456789012345678901234567890
455 1999999999999999999999999999999999999999
469 AT_DATA([bignum.sps], [dnl
470 title 'Test use of big numbers'.
472 *** Do the portable output.
473 data list file='bignum.txt'/BIGNUM 1-40.
476 *** Do the nonportable output for fun.
479 AT_CHECK([pspp -o pspp.csv bignum.sps], [0], [ignore])
482 AT_SETUP([DATE input format])
483 AT_KEYWORDS([data-in])
485 AT_CHECK([$PERL test-my-rand.pl])
486 AT_CHECK([$PERL date-in.pl date d-m-y])
487 AT_CHECK([test -s date.sps])
488 AT_CHECK([test -s date.in])
489 AT_CHECK([pspp -O format=csv date.sps])
490 AT_CHECK([cat date.out], [0], [dnl
694 AT_SETUP([ADATE input format])
695 AT_KEYWORDS([data-in])
697 AT_CHECK([$PERL test-my-rand.pl])
698 AT_CHECK([$PERL date-in.pl adate m-d-y])
699 AT_CHECK([test -s adate.sps])
700 AT_CHECK([test -s adate.in])
701 AT_CHECK([pspp -O format=csv adate.sps])
702 AT_CHECK([cat adate.out], [0], [dnl
906 AT_SETUP([EDATE input format])
907 AT_KEYWORDS([data-in])
909 AT_CHECK([$PERL test-my-rand.pl])
910 AT_CHECK([$PERL date-in.pl edate d-m-y])
911 AT_CHECK([test -s edate.sps])
912 AT_CHECK([test -s edate.in])
913 AT_CHECK([pspp -O format=csv edate.sps])
914 AT_CHECK([cat edate.out], [0], [dnl
1118 AT_SETUP([JDATE input format])
1119 AT_KEYWORDS([data-in])
1121 AT_CHECK([$PERL test-my-rand.pl])
1122 AT_CHECK([$PERL date-in.pl jdate j])
1123 AT_CHECK([test -s jdate.sps])
1124 AT_CHECK([test -s jdate.in])
1125 AT_CHECK([pspp -O format=csv jdate.sps])
1126 AT_CHECK([cat jdate.out], [0], [dnl
1330 AT_SETUP([SDATE input format])
1331 AT_KEYWORDS([data-in])
1333 AT_CHECK([$PERL test-my-rand.pl])
1334 AT_CHECK([$PERL date-in.pl sdate y-m-d])
1335 AT_CHECK([test -s sdate.sps])
1336 AT_CHECK([test -s sdate.in])
1337 AT_CHECK([pspp -O format=csv sdate.sps])
1338 AT_CHECK([cat sdate.out], [0], [dnl
1542 AT_SETUP([QYR input format])
1543 AT_KEYWORDS([data-in])
1545 AT_CHECK([$PERL test-my-rand.pl])
1546 AT_CHECK([$PERL date-in.pl qyr qQy])
1547 AT_CHECK([test -s qyr.sps])
1548 AT_CHECK([test -s qyr.in])
1549 AT_CHECK([pspp -O format=csv qyr.sps])
1550 AT_CHECK([cat qyr.out], [0], [dnl
1754 AT_SETUP([MOYR input format])
1755 AT_KEYWORDS([data-in])
1757 AT_CHECK([$PERL test-my-rand.pl])
1758 AT_CHECK([$PERL date-in.pl moyr m-y])
1759 AT_CHECK([test -s moyr.sps])
1760 AT_CHECK([test -s moyr.in])
1761 AT_CHECK([pspp -O format=csv moyr.sps])
1762 AT_CHECK([cat moyr.out], [0], [dnl
1966 AT_SETUP([WKYR input format])
1967 AT_KEYWORDS([data-in])
1969 AT_CHECK([$PERL test-my-rand.pl])
1970 AT_CHECK([$PERL date-in.pl wkyr wWy])
1971 AT_CHECK([test -s wkyr.sps])
1972 AT_CHECK([test -s wkyr.in])
1973 AT_CHECK([pspp -O format=csv wkyr.sps])
1974 AT_CHECK([cat wkyr.out], [0], [dnl
2178 AT_SETUP([DATETIME input format])
2179 AT_KEYWORDS([data-in])
2181 AT_CHECK([$PERL test-my-rand.pl])
2182 AT_CHECK([$PERL date-in.pl datetime "d-m-y +H:M" "d-m-y +H:M:S"])
2183 AT_CHECK([test -s datetime.sps])
2184 AT_CHECK([test -s datetime.in])
2185 AT_CHECK([pspp -O format=csv datetime.sps])
2186 AT_CHECK([cat datetime.out], [0], [dnl
2590 AT_SETUP([TIME input format])
2591 AT_KEYWORDS([data-in])
2593 AT_CHECK([$PERL test-my-rand.pl])
2594 AT_CHECK([$PERL time-in.pl 0 time +H:M +H:M:S])
2595 AT_CHECK([test -s time.sps])
2596 AT_CHECK([test -s time.data])
2597 AT_CHECK([pspp -O format=csv time.sps])
2598 AT_CHECK([cat time.out], [0], [dnl
3002 AT_SETUP([DTIME input format])
3003 AT_KEYWORDS([data-in])
3005 AT_CHECK([$PERL test-my-rand.pl])
3006 AT_CHECK([$PERL time-in.pl 2000 dtime '+D H:M' '+D H:M:S'])
3007 AT_CHECK([test -s dtime.sps])
3008 AT_CHECK([test -s dtime.data])
3009 AT_CHECK([pspp -O format=csv dtime.sps])
3010 AT_CHECK([cat dtime.out], [0], [dnl
3414 AT_SETUP([binary and hexadecimal input (IB, PIB, and PIBHEX formats)])
3415 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > binhex-in.data])
3416 AT_CHECK([test `wc -c < binhex-in.data` -eq 131072], [0])
3417 AT_DATA([binhex-in.sps], [dnl
3420 SET MXWARNS=10000000.
3421 SET MXERRS=10000000.
3422 FILE HANDLE data/NAME='binhex-in.data'/MODE=IMAGE/LRECL=2.
3423 DATA LIST FILE=data NOTABLE/ib 1-2 (IB) pib 1-2 (PIB) pibhex 1-2 (PIBHEX).
3424 COMPUTE x=$CASENUM - 1.
3425 PRINT OUTFILE='binhex-in.out'/x (PIBHEX4) ' ' ib pib pibhex.
3428 AT_CHECK([gzip -cd < $top_srcdir/tests/data/binhex-in.expected.cmp.gz | \
3429 $PERL -pe "printf ' %04X ', $.-1" > expout])
3430 AT_CHECK([pspp -O format=csv binhex-in.sps], [0])
3431 AT_CHECK([cat binhex-in.out], [0], [expout])
3434 AT_SETUP([BCD input (P and PK formats)])
3435 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > bcd-in.data])
3436 AT_CHECK([test `wc -c < bcd-in.data` -eq 131072], [0])
3437 AT_DATA([bcd-in.sps], [dnl
3439 SET MXWARNS=10000000.
3440 SET MXERRS=10000000.
3441 FILE HANDLE data/NAME='bcd-in.data'/MODE=IMAGE/LRECL=2.
3442 DATA LIST FILE=data NOTABLE/p 1-2 (P) pk 1-2 (PK).
3443 COMPUTE x=$CASENUM - 1.
3444 PRINT OUTFILE='bcd-in.out'/x (PIBHEX4) ' ' P PK.
3447 AT_CHECK([gzip -cd < $top_srcdir/tests/data/bcd-in.expected.cmp.gz | \
3448 $PERL -pe "printf ' %04X ', $.-1" > expout])
3449 AT_CHECK([pspp -O format=csv bcd-in.sps])
3450 AT_CHECK([cat bcd-in.out], [0], [expout])
3453 AT_SETUP([legacy input (N and Z formats)])
3454 AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > legacy-in.data])
3455 AT_CHECK([test `wc -c < legacy-in.data` -eq 131072], [0])
3456 AT_DATA([legacy-in.sps], [dnl
3458 SET MXWARNS=10000000.
3459 SET MXERRS=10000000.
3460 FILE HANDLE data/NAME='legacy-in.data'/MODE=IMAGE/LRECL=2.
3461 DATA LIST NOTABLE FILE=data/n 1-2 (N) z 1-2 (z).
3462 COMPUTE x=$CASENUM - 1.
3463 PRINT OUTFILE='legacy-in.out'/x (PIBHEX4) ' ' N Z.
3466 AT_CHECK([gzip -cd < $top_srcdir/tests/data/legacy-in.expected.cmp.gz | \
3467 $PERL -pe "printf ' %04X ', $.-1" > expout])
3468 AT_CHECK([pspp -O format=csv legacy-in.sps])
3469 AT_CHECK([cat legacy-in.out], [0], [expout])
3472 AT_SETUP([WKDAY input format])
3473 AT_DATA([wkday.sps], [dnl
3474 DATA LIST NOTABLE /wkday2 1-2 (wkday)
3482 wkday10 1-10 (wkday).
3495 FORMATS ALL (WKDAY2).
3496 PRINT OUTFILE='wkday.out'/ALL.
3499 AT_CHECK([pspp -O format=csv wkday.sps], [0], [dnl
3500 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.
3502 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.
3504 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.
3506 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.
3508 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.
3510 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.
3512 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.
3514 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.
3516 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.
3518 AT_CHECK([cat wkday.out], [0], [dnl
3519 . . . . . . . . . @&t@
3520 . . . . . . . . . @&t@
3521 MO MO MO MO MO MO MO MO MO @&t@
3522 TU TU TU TU TU TU TU TU TU @&t@
3523 WE WE WE WE WE WE WE WE WE @&t@
3524 TH TH TH TH TH TH TH TH TH @&t@
3525 FR FR FR FR FR FR FR FR FR @&t@
3526 SA SA SA SA SA SA SA SA SA @&t@
3527 SU SU SU SU SU SU SU SU SU @&t@
3528 . . . . . . . . . @&t@
3532 AT_SETUP([MONTH input format])
3533 AT_DATA([month.sps], [dnl
3534 DATA LIST NOTABLE /month3 1-3 (MONTH)
3541 month10 1-10 (MONTH).
3590 FORMATS ALL (MONTH3).
3591 PRINT OUTFILE='month.out'/ALL.
3594 AT_CHECK([pspp -O format=csv month.sps], [0], [dnl
3595 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.
3597 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.
3599 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.
3601 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.
3603 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.
3605 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.
3607 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.
3609 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.
3611 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.
3613 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.
3615 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.
3617 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.
3619 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.
3621 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.
3623 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.
3625 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.
3627 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.
3629 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.
3631 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.
3633 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.
3635 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.
3637 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.
3639 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.
3641 AT_CHECK([cat month.out], [0], [dnl
3642 . . . . . . . . @&t@
3643 . . . . . . . . @&t@
3644 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
3645 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
3646 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
3647 MAR . . . . . . . @&t@
3648 APR APR APR APR APR APR APR APR @&t@
3649 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
3650 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
3651 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
3652 JUL AUG AUG AUG AUG AUG AUG AUG @&t@
3653 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
3654 JUL AUG AUG AUG AUG AUG AUG AUG @&t@
3655 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
3656 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
3657 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
3658 . . . . . . . . @&t@
3659 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
3660 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
3661 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
3662 APR APR APR APR APR APR APR APR @&t@
3663 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
3664 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
3665 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
3666 AUG AUG AUG AUG AUG AUG AUG AUG @&t@
3667 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
3668 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
3669 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
3670 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
3671 . . . . . . . . @&t@
3672 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
3673 JAN JAN JAN JAN JAN JAN JAN JAN @&t@
3674 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
3675 FEB FEB FEB FEB FEB FEB FEB FEB @&t@
3676 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
3677 MAR MAR MAR MAR MAR MAR MAR MAR @&t@
3678 APR APR APR APR APR APR APR APR @&t@
3679 MAY MAY MAY MAY MAY MAY MAY MAY @&t@
3680 JUN JUN JUN JUN JUN JUN JUN JUN @&t@
3681 JUL JUL JUL JUL JUL JUL JUL JUL @&t@
3682 AUG AUG AUG AUG AUG AUG AUG AUG @&t@
3683 SEP SEP SEP SEP SEP SEP SEP SEP @&t@
3684 OCT OCT OCT OCT OCT OCT OCT OCT @&t@
3685 NOV NOV NOV NOV NOV NOV NOV NOV @&t@
3686 DEC DEC DEC DEC DEC DEC DEC DEC @&t@
3687 DEC DEC DEC DEC DEC DEC DEC DEC @&t@