Only taint casereader if case size is unknown.
[pspp] / tests / formats / date-out.sh
1 #! /bin/sh
2
3 TEMPDIR=/tmp/pspp-tst-$$
4 mkdir -p $TEMPDIR
5 trap 'cd /; rm -rf $TEMPDIR' 0
6
7 # ensure that top_builddir  are absolute
8 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
9 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
10 top_builddir=`cd $top_builddir; pwd`
11 PSPP=$top_builddir/src/ui/terminal/pspp
12
13 # ensure that top_srcdir is absolute
14 top_srcdir=`cd $top_srcdir; pwd`
15
16 STAT_CONFIG_PATH=$top_srcdir/config
17 export STAT_CONFIG_PATH
18
19 fail()
20 {
21     echo $activity
22     echo FAILED
23     exit 1;
24 }
25
26
27 no_result()
28 {
29     echo $activity
30     echo NO RESULT;
31     exit 2;
32 }
33
34 pass()
35 {
36     exit 0;
37 }
38
39 cd $TEMPDIR
40
41 activity="write pspp syntax"
42 cat > date-out.pspp <<EOF
43 set epoch=1930.
44 data list /x 1-30 (datetime).
45 begin data.
46 10-6-1648 0:0:0
47 30-6-1680 4:50:38.12301
48 24-7-1716 12:31:35.23453
49 19-6-1768 12:47:53.34505
50 2-8-1819 1:26:0.45615
51 27-3-1839 20:58:11.56677
52 19-4-1903 7:36:5.18964
53 25-8-1929 15:43:49.83132
54 29-9-1941 4:25:9.01293
55 19-4-1943 6:49:27.52375
56 7-10-1943 2:57:52.01565
57 17-3-1992 16:45:44.86529
58 25-2-1996 21:30:57.82047
59 29-9-41 4:25:9.15395
60 19-4-43 6:49:27.10533
61 7-10-43 2:57:52.48229
62 17-3-92 16:45:44.65827
63 25-2-96 21:30:57.58219
64 10-11-2038 22:30:4.18347
65 18-7-2094 1:56:51.59319
66 end data.
67 print outfile='date-out.out'/x(date9) ' | ' x(date11).
68 print outfile='date-out.out'/x(adate8) ' | ' x(adate10).
69 print outfile='date-out.out'/x(edate8) ' | ' x(edate10).
70 print outfile='date-out.out'/x(jdate5) ' | ' x(jdate7).
71 print outfile='date-out.out'/x(sdate8) ' | ' x(sdate10).
72 print outfile='date-out.out'/x(qyr6) ' | ' x(qyr8).
73 print outfile='date-out.out'/x(moyr6) ' | ' x(moyr8).
74 print outfile='date-out.out'/x(wkyr8) ' | ' x(wkyr10).
75 print outfile='date-out.out'/x(datetime17).
76 print outfile='date-out.out'/x(datetime18).
77 print outfile='date-out.out'/x(datetime19).
78 print outfile='date-out.out'/x(datetime20).
79 print outfile='date-out.out'/x(datetime21).
80 print outfile='date-out.out'/x(datetime22).
81 print outfile='date-out.out'/x(datetime22.1).
82 print outfile='date-out.out'/x(datetime23.2).
83 print outfile='date-out.out'/x(datetime24.3).
84 print outfile='date-out.out'/x(datetime25.4).
85 print outfile='date-out.out'/x(datetime26.5).
86 execute.
87 EOF
88 if [ $? -ne 0 ] ; then no_result ; fi
89
90 activity="run program"
91 $SUPERVISOR $PSPP --testing-mode date-out.pspp
92 if [ $? -ne 0 ] ; then no_result ; fi
93
94 activity="compare output"
95 diff -u date-out.out - <<EOF 
96  ********* | 10-JUN-1648
97  ******** | 06/10/1648
98  ******** | 10.06.1648
99  ***** | 1648162
100  ******** | 1648/06/10
101  ****** | 2 Q 1648
102  ****** | JUN 1648
103  ******** | 24 WK 1648
104  10-JUN-1648 00:00
105   10-JUN-1648 00:00
106    10-JUN-1648 00:00
107  10-JUN-1648 00:00:00
108   10-JUN-1648 00:00:00
109    10-JUN-1648 00:00:00
110  10-JUN-1648 00:00:00.0
111  10-JUN-1648 00:00:00.00
112  10-JUN-1648 00:00:00.000
113  10-JUN-1648 00:00:00.0000
114  10-JUN-1648 00:00:00.00000
115  ********* | 30-JUN-1680
116  ******** | 06/30/1680
117  ******** | 30.06.1680
118  ***** | 1680182
119  ******** | 1680/06/30
120  ****** | 2 Q 1680
121  ****** | JUN 1680
122  ******** | 26 WK 1680
123  30-JUN-1680 04:50
124   30-JUN-1680 04:50
125    30-JUN-1680 04:50
126  30-JUN-1680 04:50:38
127   30-JUN-1680 04:50:38
128    30-JUN-1680 04:50:38
129  30-JUN-1680 04:50:38.1
130  30-JUN-1680 04:50:38.12
131  30-JUN-1680 04:50:38.123
132  30-JUN-1680 04:50:38.1230
133  30-JUN-1680 04:50:38.12301
134  ********* | 24-JUL-1716
135  ******** | 07/24/1716
136  ******** | 24.07.1716
137  ***** | 1716206
138  ******** | 1716/07/24
139  ****** | 3 Q 1716
140  ****** | JUL 1716
141  ******** | 30 WK 1716
142  24-JUL-1716 12:31
143   24-JUL-1716 12:31
144    24-JUL-1716 12:31
145  24-JUL-1716 12:31:35
146   24-JUL-1716 12:31:35
147    24-JUL-1716 12:31:35
148  24-JUL-1716 12:31:35.2
149  24-JUL-1716 12:31:35.23
150  24-JUL-1716 12:31:35.235
151  24-JUL-1716 12:31:35.2345
152  24-JUL-1716 12:31:35.23453
153  ********* | 19-JUN-1768
154  ******** | 06/19/1768
155  ******** | 19.06.1768
156  ***** | 1768171
157  ******** | 1768/06/19
158  ****** | 2 Q 1768
159  ****** | JUN 1768
160  ******** | 25 WK 1768
161  19-JUN-1768 12:47
162   19-JUN-1768 12:47
163    19-JUN-1768 12:47
164  19-JUN-1768 12:47:53
165   19-JUN-1768 12:47:53
166    19-JUN-1768 12:47:53
167  19-JUN-1768 12:47:53.3
168  19-JUN-1768 12:47:53.35
169  19-JUN-1768 12:47:53.345
170  19-JUN-1768 12:47:53.3450
171  19-JUN-1768 12:47:53.34505
172  ********* | 02-AUG-1819
173  ******** | 08/02/1819
174  ******** | 02.08.1819
175  ***** | 1819214
176  ******** | 1819/08/02
177  ****** | 3 Q 1819
178  ****** | AUG 1819
179  ******** | 31 WK 1819
180  02-AUG-1819 01:26
181   02-AUG-1819 01:26
182    02-AUG-1819 01:26
183  02-AUG-1819 01:26:00
184   02-AUG-1819 01:26:00
185    02-AUG-1819 01:26:00
186  02-AUG-1819 01:26:00.5
187  02-AUG-1819 01:26:00.46
188  02-AUG-1819 01:26:00.456
189  02-AUG-1819 01:26:00.4562
190  02-AUG-1819 01:26:00.45615
191  ********* | 27-MAR-1839
192  ******** | 03/27/1839
193  ******** | 27.03.1839
194  ***** | 1839086
195  ******** | 1839/03/27
196  ****** | 1 Q 1839
197  ****** | MAR 1839
198  ******** | 13 WK 1839
199  27-MAR-1839 20:58
200   27-MAR-1839 20:58
201    27-MAR-1839 20:58
202  27-MAR-1839 20:58:11
203   27-MAR-1839 20:58:11
204    27-MAR-1839 20:58:11
205  27-MAR-1839 20:58:11.6
206  27-MAR-1839 20:58:11.57
207  27-MAR-1839 20:58:11.567
208  27-MAR-1839 20:58:11.5668
209  27-MAR-1839 20:58:11.56677
210  ********* | 19-APR-1903
211  ******** | 04/19/1903
212  ******** | 19.04.1903
213  ***** | 1903109
214  ******** | 1903/04/19
215  ****** | 2 Q 1903
216  ****** | APR 1903
217  ******** | 16 WK 1903
218  19-APR-1903 07:36
219   19-APR-1903 07:36
220    19-APR-1903 07:36
221  19-APR-1903 07:36:05
222   19-APR-1903 07:36:05
223    19-APR-1903 07:36:05
224  19-APR-1903 07:36:05.2
225  19-APR-1903 07:36:05.19
226  19-APR-1903 07:36:05.190
227  19-APR-1903 07:36:05.1896
228  19-APR-1903 07:36:05.18964
229  ********* | 25-AUG-1929
230  ******** | 08/25/1929
231  ******** | 25.08.1929
232  ***** | 1929237
233  ******** | 1929/08/25
234  ****** | 3 Q 1929
235  ****** | AUG 1929
236  ******** | 34 WK 1929
237  25-AUG-1929 15:43
238   25-AUG-1929 15:43
239    25-AUG-1929 15:43
240  25-AUG-1929 15:43:49
241   25-AUG-1929 15:43:49
242    25-AUG-1929 15:43:49
243  25-AUG-1929 15:43:49.8
244  25-AUG-1929 15:43:49.83
245  25-AUG-1929 15:43:49.831
246  25-AUG-1929 15:43:49.8313
247  25-AUG-1929 15:43:49.83132
248  29-SEP-41 | 29-SEP-1941
249  09/29/41 | 09/29/1941
250  29.09.41 | 29.09.1941
251  41272 | 1941272
252  41/09/29 | 1941/09/29
253  3 Q 41 | 3 Q 1941
254  SEP 41 | SEP 1941
255  39 WK 41 | 39 WK 1941
256  29-SEP-1941 04:25
257   29-SEP-1941 04:25
258    29-SEP-1941 04:25
259  29-SEP-1941 04:25:09
260   29-SEP-1941 04:25:09
261    29-SEP-1941 04:25:09
262  29-SEP-1941 04:25:09.0
263  29-SEP-1941 04:25:09.01
264  29-SEP-1941 04:25:09.013
265  29-SEP-1941 04:25:09.0129
266  29-SEP-1941 04:25:09.01293
267  19-APR-43 | 19-APR-1943
268  04/19/43 | 04/19/1943
269  19.04.43 | 19.04.1943
270  43109 | 1943109
271  43/04/19 | 1943/04/19
272  2 Q 43 | 2 Q 1943
273  APR 43 | APR 1943
274  16 WK 43 | 16 WK 1943
275  19-APR-1943 06:49
276   19-APR-1943 06:49
277    19-APR-1943 06:49
278  19-APR-1943 06:49:27
279   19-APR-1943 06:49:27
280    19-APR-1943 06:49:27
281  19-APR-1943 06:49:27.5
282  19-APR-1943 06:49:27.52
283  19-APR-1943 06:49:27.524
284  19-APR-1943 06:49:27.5238
285  19-APR-1943 06:49:27.52375
286  07-OCT-43 | 07-OCT-1943
287  10/07/43 | 10/07/1943
288  07.10.43 | 07.10.1943
289  43280 | 1943280
290  43/10/07 | 1943/10/07
291  4 Q 43 | 4 Q 1943
292  OCT 43 | OCT 1943
293  40 WK 43 | 40 WK 1943
294  07-OCT-1943 02:57
295   07-OCT-1943 02:57
296    07-OCT-1943 02:57
297  07-OCT-1943 02:57:52
298   07-OCT-1943 02:57:52
299    07-OCT-1943 02:57:52
300  07-OCT-1943 02:57:52.0
301  07-OCT-1943 02:57:52.02
302  07-OCT-1943 02:57:52.016
303  07-OCT-1943 02:57:52.0156
304  07-OCT-1943 02:57:52.01565
305  17-MAR-92 | 17-MAR-1992
306  03/17/92 | 03/17/1992
307  17.03.92 | 17.03.1992
308  92077 | 1992077
309  92/03/17 | 1992/03/17
310  1 Q 92 | 1 Q 1992
311  MAR 92 | MAR 1992
312  11 WK 92 | 11 WK 1992
313  17-MAR-1992 16:45
314   17-MAR-1992 16:45
315    17-MAR-1992 16:45
316  17-MAR-1992 16:45:44
317   17-MAR-1992 16:45:44
318    17-MAR-1992 16:45:44
319  17-MAR-1992 16:45:44.9
320  17-MAR-1992 16:45:44.87
321  17-MAR-1992 16:45:44.865
322  17-MAR-1992 16:45:44.8653
323  17-MAR-1992 16:45:44.86529
324  25-FEB-96 | 25-FEB-1996
325  02/25/96 | 02/25/1996
326  25.02.96 | 25.02.1996
327  96056 | 1996056
328  96/02/25 | 1996/02/25
329  1 Q 96 | 1 Q 1996
330  FEB 96 | FEB 1996
331   8 WK 96 |  8 WK 1996
332  25-FEB-1996 21:30
333   25-FEB-1996 21:30
334    25-FEB-1996 21:30
335  25-FEB-1996 21:30:57
336   25-FEB-1996 21:30:57
337    25-FEB-1996 21:30:57
338  25-FEB-1996 21:30:57.8
339  25-FEB-1996 21:30:57.82
340  25-FEB-1996 21:30:57.820
341  25-FEB-1996 21:30:57.8205
342  25-FEB-1996 21:30:57.82047
343  29-SEP-41 | 29-SEP-1941
344  09/29/41 | 09/29/1941
345  29.09.41 | 29.09.1941
346  41272 | 1941272
347  41/09/29 | 1941/09/29
348  3 Q 41 | 3 Q 1941
349  SEP 41 | SEP 1941
350  39 WK 41 | 39 WK 1941
351  29-SEP-1941 04:25
352   29-SEP-1941 04:25
353    29-SEP-1941 04:25
354  29-SEP-1941 04:25:09
355   29-SEP-1941 04:25:09
356    29-SEP-1941 04:25:09
357  29-SEP-1941 04:25:09.2
358  29-SEP-1941 04:25:09.15
359  29-SEP-1941 04:25:09.154
360  29-SEP-1941 04:25:09.1539
361  29-SEP-1941 04:25:09.15395
362  19-APR-43 | 19-APR-1943
363  04/19/43 | 04/19/1943
364  19.04.43 | 19.04.1943
365  43109 | 1943109
366  43/04/19 | 1943/04/19
367  2 Q 43 | 2 Q 1943
368  APR 43 | APR 1943
369  16 WK 43 | 16 WK 1943
370  19-APR-1943 06:49
371   19-APR-1943 06:49
372    19-APR-1943 06:49
373  19-APR-1943 06:49:27
374   19-APR-1943 06:49:27
375    19-APR-1943 06:49:27
376  19-APR-1943 06:49:27.1
377  19-APR-1943 06:49:27.11
378  19-APR-1943 06:49:27.105
379  19-APR-1943 06:49:27.1053
380  19-APR-1943 06:49:27.10533
381  07-OCT-43 | 07-OCT-1943
382  10/07/43 | 10/07/1943
383  07.10.43 | 07.10.1943
384  43280 | 1943280
385  43/10/07 | 1943/10/07
386  4 Q 43 | 4 Q 1943
387  OCT 43 | OCT 1943
388  40 WK 43 | 40 WK 1943
389  07-OCT-1943 02:57
390   07-OCT-1943 02:57
391    07-OCT-1943 02:57
392  07-OCT-1943 02:57:52
393   07-OCT-1943 02:57:52
394    07-OCT-1943 02:57:52
395  07-OCT-1943 02:57:52.5
396  07-OCT-1943 02:57:52.48
397  07-OCT-1943 02:57:52.482
398  07-OCT-1943 02:57:52.4823
399  07-OCT-1943 02:57:52.48229
400  17-MAR-92 | 17-MAR-1992
401  03/17/92 | 03/17/1992
402  17.03.92 | 17.03.1992
403  92077 | 1992077
404  92/03/17 | 1992/03/17
405  1 Q 92 | 1 Q 1992
406  MAR 92 | MAR 1992
407  11 WK 92 | 11 WK 1992
408  17-MAR-1992 16:45
409   17-MAR-1992 16:45
410    17-MAR-1992 16:45
411  17-MAR-1992 16:45:44
412   17-MAR-1992 16:45:44
413    17-MAR-1992 16:45:44
414  17-MAR-1992 16:45:44.7
415  17-MAR-1992 16:45:44.66
416  17-MAR-1992 16:45:44.658
417  17-MAR-1992 16:45:44.6583
418  17-MAR-1992 16:45:44.65827
419  25-FEB-96 | 25-FEB-1996
420  02/25/96 | 02/25/1996
421  25.02.96 | 25.02.1996
422  96056 | 1996056
423  96/02/25 | 1996/02/25
424  1 Q 96 | 1 Q 1996
425  FEB 96 | FEB 1996
426   8 WK 96 |  8 WK 1996
427  25-FEB-1996 21:30
428   25-FEB-1996 21:30
429    25-FEB-1996 21:30
430  25-FEB-1996 21:30:57
431   25-FEB-1996 21:30:57
432    25-FEB-1996 21:30:57
433  25-FEB-1996 21:30:57.6
434  25-FEB-1996 21:30:57.58
435  25-FEB-1996 21:30:57.582
436  25-FEB-1996 21:30:57.5822
437  25-FEB-1996 21:30:57.58219
438  ********* | 10-NOV-2038
439  ******** | 11/10/2038
440  ******** | 10.11.2038
441  ***** | 2038314
442  ******** | 2038/11/10
443  ****** | 4 Q 2038
444  ****** | NOV 2038
445  ******** | 45 WK 2038
446  10-NOV-2038 22:30
447   10-NOV-2038 22:30
448    10-NOV-2038 22:30
449  10-NOV-2038 22:30:04
450   10-NOV-2038 22:30:04
451    10-NOV-2038 22:30:04
452  10-NOV-2038 22:30:04.2
453  10-NOV-2038 22:30:04.18
454  10-NOV-2038 22:30:04.183
455  10-NOV-2038 22:30:04.1835
456  10-NOV-2038 22:30:04.18347
457  ********* | 18-JUL-2094
458  ******** | 07/18/2094
459  ******** | 18.07.2094
460  ***** | 2094199
461  ******** | 2094/07/18
462  ****** | 3 Q 2094
463  ****** | JUL 2094
464  ******** | 29 WK 2094
465  18-JUL-2094 01:56
466   18-JUL-2094 01:56
467    18-JUL-2094 01:56
468  18-JUL-2094 01:56:51
469   18-JUL-2094 01:56:51
470    18-JUL-2094 01:56:51
471  18-JUL-2094 01:56:51.6
472  18-JUL-2094 01:56:51.59
473  18-JUL-2094 01:56:51.593
474  18-JUL-2094 01:56:51.5932
475  18-JUL-2094 01:56:51.59319
476 EOF
477 if [ $? -ne 0 ] ; then fail ; fi
478
479 activity="write pspp syntax"
480 cat > bad-date-out.pspp <<EOF
481 set epoch=1930.
482 set errors=none.
483 data list list /x.
484 begin data.
485 0
486 -1
487 3e11
488 end data.
489 print outfile='bad-date.out'/x(date9) ' | ' x(date11).
490 print outfile='bad-date.out'/x(adate8) ' | ' x(adate10).
491 print outfile='bad-date.out'/x(edate8) ' | ' x(edate10).
492 print outfile='bad-date.out'/x(jdate5) ' | ' x(jdate7).
493 print outfile='bad-date.out'/x(sdate8) ' | ' x(sdate10).
494 print outfile='bad-date.out'/x(qyr6) ' | ' x(qyr8).
495 print outfile='bad-date.out'/x(moyr6) ' | ' x(moyr8).
496 print outfile='bad-date.out'/x(wkyr8) ' | ' x(wkyr10).
497 print outfile='bad-date.out'/x(datetime17).
498 print outfile='bad-date.out'/x(datetime18).
499 print outfile='bad-date.out'/x(datetime19).
500 print outfile='bad-date.out'/x(datetime20).
501 print outfile='bad-date.out'/x(datetime21).
502 print outfile='bad-date.out'/x(datetime22).
503 print outfile='bad-date.out'/x(datetime22.1).
504 print outfile='bad-date.out'/x(datetime23.2).
505 print outfile='bad-date.out'/x(datetime24.3).
506 print outfile='bad-date.out'/x(datetime25.4).
507 print outfile='bad-date.out'/x(datetime26.5).
508 execute.
509 EOF
510 if [ $? -ne 0 ] ; then no_result ; fi
511
512 activity="run program"
513 $SUPERVISOR $PSPP --testing-mode bad-date-out.pspp
514 if [ $? -ne 0 ] ; then no_result ; fi
515
516 activity="compare output"
517 diff -u bad-date.out - <<EOF 
518          . |           .
519         . |          .
520         . |          .
521      . |       .
522         . |          .
523       . |        .
524       . |        .
525         . |          .
526                  .
527                   .
528                    .
529                     .
530                      .
531                       .
532                      . 
533                      .  
534                      .   
535                      .    
536                      .     
537          . |           .
538         . |          .
539         . |          .
540      . |       .
541         . |          .
542       . |        .
543       . |        .
544         . |          .
545                  .
546                   .
547                    .
548                     .
549                      .
550                       .
551                      . 
552                      .  
553                      .   
554                      .    
555                      .     
556  ********* | ***********
557  ******** | **********
558  ******** | **********
559  ***** | *******
560  ******** | **********
561  ****** | ********
562  ****** | ********
563  ******** | **********
564  28-MAY-**** 05:20
565   28-MAY-**** 05:20
566    28-MAY-**** 05:20
567  28-MAY-**** 05:20:00
568   28-MAY-**** 05:20:00
569    28-MAY-**** 05:20:00
570  28-MAY-**** 05:20:00.0
571  28-MAY-**** 05:20:00.00
572  28-MAY-**** 05:20:00.000
573  28-MAY-**** 05:20:00.0000
574  28-MAY-**** 05:20:00.00000
575 EOF
576 if [ $? -ne 0 ] ; then fail ; fi
577
578 pass