Age Owner TLA Line data Source code
1 : #include <stdio.h>
2 : #include <stdlib.h>
3 : #include <pgtypes_error.h>
4 : #include <sqltypes.h>
5 :
6 : /*
7 : * This file tests various forms of date-input/output by means of
8 : * rfmtdate / rdefmtdate / rstrdate
9 : */
10 :
11 :
12 : static void
13 : check_return(int ret);
14 :
15 : static void
1986 peter_e 16 CBC 2 : date_test_strdate(const char *input)
17 : {
18 : static int i;
19 : date d;
20 : int r, q;
21 : char dbuf[11];
22 :
6081 meskes 23 2 : r = rstrdate(input, &d);
24 2 : printf("r: %d ", r);
25 2 : if (r == 0)
26 : {
27 2 : q = rdatestr(d, dbuf);
28 2 : printf("q: %d ", q);
29 2 : if (q == 0)
30 : {
31 2 : printf("date %d: %s\n", i++, dbuf);
32 : }
33 : else
6081 meskes 34 UBC 0 : printf("\n");
35 : }
36 : else
37 0 : check_return(r);
6081 meskes 38 CBC 2 : }
39 :
40 : static void
1986 peter_e 41 20 : date_test_defmt(const char *fmt, const char *input)
42 : {
43 : static int i;
44 : char dbuf[11];
45 : date d;
46 : int q, r;
47 :
6081 meskes 48 20 : r = rdefmtdate(&d, fmt, input);
49 20 : printf("r: %d ", r);
50 20 : if (r == 0)
51 : {
52 15 : q = rdatestr(d, dbuf);
53 15 : printf("q: %d ", q);
54 15 : if (q == 0)
55 : {
56 15 : printf("date %d: %s\n", i++, dbuf);
57 : }
58 : else
6081 meskes 59 UBC 0 : printf("\n");
60 : }
61 : else
6081 meskes 62 CBC 5 : check_return(r);
63 20 : }
64 :
65 : static void
1986 peter_e 66 12 : date_test_fmt(date d, const char *fmt)
67 : {
68 : static int i;
69 : char buf[200];
70 : int r;
71 :
6081 meskes 72 12 : r = rfmtdate(d, fmt, buf);
73 12 : printf("r: %d ", r);
74 12 : if (r != 0)
6081 meskes 75 UBC 0 : check_return(r);
76 : else
6081 meskes 77 CBC 12 : printf("date: %d: %s\n", i++, buf);
78 12 : }
79 :
80 :
81 : int
82 1 : main(void)
83 : {
84 1 : short mdy[3] = { 11, 23, 1959 };
85 : char dbuf[11];
86 : date d;
87 : int r;
88 :
89 1 : ECPGdebug(1, stderr);
90 :
91 1 : r = rmdyjul(mdy, &d);
92 1 : printf("create: r: %d\n", r);
93 1 : if (r == 0)
94 : {
95 1 : rdatestr(d, dbuf);
96 1 : printf("date: %s\n", dbuf);
97 : }
98 :
99 : /* input mask is mmddyyyy */
100 1 : date_test_strdate("12031994");
101 1 : date_test_strdate("9.6.1994");
102 :
103 1 : date_test_fmt(d, "mmddyy");
104 1 : date_test_fmt(d, "ddmmyy");
105 1 : date_test_fmt(d, "yymmdd");
106 1 : date_test_fmt(d, "yy/mm/dd");
107 1 : date_test_fmt(d, "yy mm dd");
108 1 : date_test_fmt(d, "yy.mm.dd");
109 1 : date_test_fmt(d, ".mm.yyyy.dd.");
110 1 : date_test_fmt(d, "mmm. dd, yyyy");
111 1 : date_test_fmt(d, "mmm dd yyyy");
112 1 : date_test_fmt(d, "yyyy dd mm");
113 1 : date_test_fmt(d, "ddd, mmm. dd, yyyy");
114 1 : date_test_fmt(d, "(ddd) mmm. dd, yyyy");
115 :
116 1 : date_test_defmt("ddmmyy", "21-2-54");
117 1 : date_test_defmt("ddmmyy", "2-12-54");
118 1 : date_test_defmt("ddmmyy", "20111954");
119 1 : date_test_defmt("ddmmyy", "130464");
120 1 : date_test_defmt("mmm.dd.yyyy", "MAR-12-1967");
121 1 : date_test_defmt("yy/mm/dd", "1954, February 3rd");
122 1 : date_test_defmt("mmm.dd.yyyy", "041269");
123 1 : date_test_defmt("yy/mm/dd", "In the year 2525, in the month of July, mankind will be alive on the 28th day");
124 1 : date_test_defmt("dd-mm-yy", "I said on the 28th of July in the year 2525");
125 1 : date_test_defmt("mmm.dd.yyyy", "9/14/58");
126 1 : date_test_defmt("yy/mm/dd", "47/03/29");
127 1 : date_test_defmt("mmm.dd.yyyy", "oct 28 1975");
128 1 : date_test_defmt("mmddyy", "Nov 14th, 1985");
129 : /* ok: still contains dd mm yy */
130 1 : date_test_defmt("bladdfoommbaryybong", "20/11/1954");
131 : /* 1994 is not a leap year, it accepts the date as 01-03-1994 */
132 1 : date_test_defmt("ddmmyy", "29-02-1994");
133 :
134 : /* ECPG_INFORMIX_ENOTDMY, need "dd", "mm" and "yy" */
135 1 : date_test_defmt("dmy", "20/11/1954");
136 :
137 : /* ECPG_INFORMIX_ENOSHORTDATE */
138 1 : date_test_defmt("ddmmyy", "21254");
139 1 : date_test_defmt("ddmmyy", " 21254 ");
140 :
141 : /* ECPG_INFORMIX_BAD_DAY */
142 1 : date_test_defmt("ddmmyy", "320494");
143 :
144 : /* ECPG_INFORMIX_BAD_MONTH */
145 1 : date_test_defmt("mm-yyyy-dd", "13-1993-21");
146 :
147 : /* ECPG_INFORMIX_BAD_YEAR */
148 : /* ??? */
149 :
2061 peter_e 150 1 : return 0;
151 : }
152 :
153 : static void
6054 tgl 154 5 : check_return(int ret)
155 : {
6081 meskes 156 5 : switch(ret)
157 : {
158 1 : case ECPG_INFORMIX_ENOTDMY:
159 1 : printf("(ECPG_INFORMIX_ENOTDMY)");
160 1 : break;
161 2 : case ECPG_INFORMIX_ENOSHORTDATE:
162 2 : printf("(ECPG_INFORMIX_ENOSHORTDATE)");
163 2 : break;
164 1 : case ECPG_INFORMIX_BAD_DAY:
165 1 : printf("(ECPG_INFORMIX_BAD_DAY)");
166 1 : break;
167 1 : case ECPG_INFORMIX_BAD_MONTH:
168 1 : printf("(ECPG_INFORMIX_BAD_MONTH)");
169 1 : break;
6081 meskes 170 UBC 0 : default:
171 0 : printf("(unknown ret: %d)", ret);
172 0 : break;
173 : }
6081 meskes 174 CBC 5 : printf("\n");
175 5 : }
|