Fix typo: occured ==> occurred
[scilab.git] / scilab / modules / call_scilab / examples / call_scilab / c / LabWindow / CallsciC.c
1 /* Allan CORNET */
2 /* Scilab, INRIA 2004 */
3 /* Only For Windows */
4 /*--------------------------------------------------------------------------*/
5 #pragma comment(lib, "../../../../../../bin/libScilab.lib")
6 #pragma comment(lib, "../../../../../../bin/MALLOC.lib")
7 /*--------------------------------------------------------------------------*/
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include "call_scilab.h"
12 #include "stack-c.h"
13 /*--------------------------------------------------------------------------*/
14 /* See SCI/modules/core/includes/call_scilab.h */
15 /*--------------------------------------------------------------------------*/
16 static int example1(void)
17 {
18     static double A[] = {1, 2, 3, 4};
19     int mA = 2, nA = 2;
20     static double b[] = {4, 5};
21     int mb = 2, nb = 1;
22
23
24     /* Create Scilab matrices A and b */
25     WriteMatrix("A", &mA, &nA, A);
26     WriteMatrix("b", &mb, &nb, b);
27
28     SendScilabJob("disp('A=');");
29     SendScilabJob("disp(A);");
30     SendScilabJob("disp('b=');");
31     SendScilabJob("disp(b);");
32     SendScilabJob("disp('x=A\\b');");
33
34     if ( SendScilabJob("A,b,x=A\\b;") != 0)
35     {
36         fprintf(stdout, "Error occurred during scilab execution (SendScilabJob)\n");
37     }
38     else
39     {
40         double *cxtmp = NULL;
41         int m, n, lp, i;
42
43         /* Get m and n */
44         GetMatrixptr("x", &m, &n, &lp);
45
46         cxtmp = (double*)malloc((m * n) * sizeof(double));
47
48         ReadMatrix("x", &m, &n, cxtmp);
49
50         for (i = 0; i < m * n; i++)
51         {
52             fprintf(stdout, "x[%d] = %5.2f\n", i, cxtmp[i]);
53         }
54
55         if (cxtmp)
56         {
57             free(cxtmp);
58             cxtmp = NULL;
59         }
60     }
61     return 0;
62 }
63 /*--------------------------------------------------------------------------*/
64 static int example2(void)
65 {
66     int code = 0;
67
68     char **JOBS = NULL;
69     const int SizeJOBS = 5;
70     int i = 0;
71     int m = 0, n = 0;
72     double *cxtmp = NULL;
73
74     JOBS = (char**)malloc(sizeof(char**) * SizeJOBS);
75
76     for (i = 0; i < SizeJOBS; i++)
77     {
78         JOBS[i] = (char*)malloc(sizeof(char*) * 1024);
79     }
80
81     strcpy(JOBS[0], "A=1 ..");
82     strcpy(JOBS[1], "+3;");
83     strcpy(JOBS[2], "B = 8;");
84     strcpy(JOBS[3], "+3;");
85     strcpy(JOBS[4], "C=A+B;"); /* C = 12 */
86
87
88     for (i = 0; i < SizeJOBS; i++)
89     {
90         printf("JOBS[%d] = %s\n", i, JOBS[i]);
91     }
92
93     code = SendScilabJobs(JOBS, SizeJOBS);
94
95     if (code)
96     {
97         char lastjob[4096]; // bsiz in scilab 4096 max
98         if (GetLastJob(lastjob, 4096))
99         {
100             printf("Error %s\n", lastjob);
101         }
102     }
103
104     m = 1;
105     n = 1;
106     cxtmp = (double*)malloc((m * n) * sizeof(double));
107
108     ReadMatrix("C", &m, &n, cxtmp);
109
110     printf("Result :\n");
111     for (i = 0; i < m * n; i++)
112     {
113         fprintf(stdout, "C[%d] = %5.2f\n", i, cxtmp[i]);
114     }
115
116     for (i = 0; i < SizeJOBS; i++)
117     {
118         if (JOBS[i])
119         {
120             free(JOBS[i]);
121             JOBS[i] = NULL;
122         }
123     }
124     return 1;
125 }
126 /*--------------------------------------------------------------------------*/
127 static int example3(void)
128 {
129     SendScilabJob("plot3d();quit;");
130     printf("\nClose Graphical Windows to close this example.\n");
131     while ( ScilabHaveAGraph() )
132     {
133         ScilabDoOneEvent();
134     }
135     return 1;
136 }
137 /*--------------------------------------------------------------------------*/
138 int main(void)
139 /* int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR szCmdLine, int iCmdShow) */
140 {
141     if ( StartScilab(NULL, NULL, NULL) == FALSE ) printf("Error : StartScilab\n");
142     printf("\nexample 1\n");
143     example1();
144     printf("\npress return\n");
145     getchar();
146
147     printf("\nexample 2\n");
148     example2();
149     printf("\npress return\n");
150     getchar();
151
152     printf("\nexample 3\n");
153     example3();
154     printf("\npress return\n");
155     getchar();
156
157
158     if ( TerminateScilab(NULL) == FALSE ) printf("Error : TerminateScilab\n");
159     return 0;
160 }
161 /*--------------------------------------------------------------------------*/