Implement SAVE TRANSLATE to comma- and tab-delimited text formats.
[pspp-builds.git] / tests / language / data-io / save-translate.at
1 AT_BANNER([SAVE TRANSLATE /TYPE=CSV])
2
3 m4_define([PREPARE_SAVE_TRANSLATE_CSV], [dnl
4 AT_KEYWORDS([SAVE TRANSLATE])
5 AT_DATA([data.txt], [dnl
6 0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
7 , '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
8 1.625,'0 12:00',,,xyzzy,1
9 ])
10 AT_DATA([save-translate.pspp], [dnl
11 SET DECIMAL=DOT.
12 DATA LIST LIST NOTABLE FILE="data.txt"
13     /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
14      filter(F1.0).
15 MISSING VALUES number(0) time('0 12:00') string('xyzzy').
16 FILTER BY filter.
17 SAVE TRANSLATE /OUTFILE="data.csv" /TYPE=m4_if([$2], [], [CSV], [$2])
18     $1.
19 ])
20 AT_CHECK([pspp -O format=csv save-translate.pspp], [0])
21 ])
22
23 AT_SETUP([CSV output -- defaults])
24 PREPARE_SAVE_TRANSLATE_CSV
25 AT_CHECK([cat data.csv], [0], [dnl
26 0,33:30:05,01/02/2003,08/25/1995 15:30:00,"'a,b,c'",0
27  ,-05:17:00,10/31/2010,04/09/2008 09:29:00, xxx,1
28 1.625,12:00:00, , ,xyzzy,1
29 ])
30 AT_CLEANUP
31
32 AT_SETUP([CSV output -- recode missing, delete unselected])
33 PREPARE_SAVE_TRANSLATE_CSV([/MISSING=RECODE /UNSELECTED=DELETE])
34 AT_CHECK([cat data.csv], [0], [dnl
35  ,-05:17:00,10/31/2010,04/09/2008 09:29:00, xxx,1
36 1.625, , , ,,1
37 ])
38 AT_CLEANUP
39
40 AT_SETUP([CSV output -- var names, formats])
41 PREPARE_SAVE_TRANSLATE_CSV(
42   [/FIELDNAMES /TEXTOPTIONS FORMAT=VARIABLE /UNSELECTED=RETAIN])
43 AT_CHECK([cat data.csv], [0], [dnl
44 number,time,date,datetime,string,filter
45 .000,1 09:30:05,01/02/2003,25-AUG-1995 15:30:00,"'a,b,c'",0
46  ,-0 05:17,10/31/2010,09-APR-2008 09:29:00, xxx,1
47 1.625,0 12:00:00, , ,xyzzy,1
48 ])
49 AT_CLEANUP
50
51 AT_SETUP([CSV output -- comma as decimal point])
52 PREPARE_SAVE_TRANSLATE_CSV([/FIELDNAMES /TEXTOPTIONS DECIMAL=COMMA])
53 AT_CHECK([cat data.csv], [0], [dnl
54 number;time;date;datetime;string;filter
55 0;33:30:05;01/02/2003;08/25/1995 15:30:00;'a,b,c';0
56  ;-05:17:00;10/31/2010;04/09/2008 09:29:00; xxx;1
57 1,625;12:00:00; ; ;xyzzy;1
58 ])
59 AT_CLEANUP
60
61 AT_SETUP([CSV output -- custom delimiter, qualifier])
62 PREPARE_SAVE_TRANSLATE_CSV(
63   [/FIELDNAMES /TEXTOPTIONS DELIMITER=':' QUALIFIER="'"])
64 AT_CHECK([cat data.csv], [0], [dnl
65 number:time:date:datetime:string:filter
66 0:'33:30:05':01/02/2003:'08/25/1995 15:30:00':'''a,b,c''':0
67  :'-05:17:00':10/31/2010:'04/09/2008 09:29:00': xxx:1
68 1.625:'12:00:00': : :xyzzy:1
69 ])
70 AT_CLEANUP
71
72 AT_SETUP([CSV output -- KEEP, RENAME])
73 PREPARE_SAVE_TRANSLATE_CSV(
74   [/FIELDNAMES /KEEP=time string /RENAME string=name /UNSELECTED=DELETE])
75 AT_CHECK([cat data.csv], [0], [dnl
76 time,name
77 -05:17:00, xxx
78 12:00:00,xyzzy
79 ])
80 AT_CLEANUP
81
82 AT_BANNER([SAVE TRANSLATE /TYPE=TAB])
83
84 AT_SETUP([TAB output])
85 PREPARE_SAVE_TRANSLATE_CSV([/FIELDNAMES], [TAB])
86 AT_CHECK([cat data.csv], [0], [dnl
87 number  time    date    datetime        string  filter
88 0       33:30:05        01/02/2003      08/25/1995 15:30:00     'a,b,c' 0
89         -05:17:00       10/31/2010      04/09/2008 09:29:00      xxx    1
90 1.625   12:00:00                        xyzzy   1
91 ])
92 AT_CLEANUP