powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Node.js
33 сообщений из 33, показаны все 2 страниц
[gt.m] Node.js
    #39028290
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !
Я пару дней смотрю в сторону этого зверя...
Есть здесь на форуме наши мампсеры, которые могут подсказать
что нибудь по этому поводу ?
В двух словах:

API Сервер. Естественно на GT.M - рабочий 100%
А вот на счет клиента вопрос.
Жду чтоб не засорять пост.

Спасибо.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028399
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuЕсть здесь на форуме наши мампсеры, которые могут подсказать
что нибудь по этому поводу ?
Наш директор мечтает использовать эту связку...
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028409
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, как минимум вот это
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028460
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть клиент TCP на node.js :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
net = require('net');

 HOST = '192.168.1.111';
 PORT = 6969;
 var str='w $zv';

 client = new net.Socket();
 client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    // Write a message to the socket as soon as the client is connected, the server will receive it as message from the client 
    client.write('XE ' + str + '\r\n');

});

// Add a 'data' event handler for the client socket
// data is what the server sent to this socket
client.on('data', function(data) {
    
    console.log('Data returned from [gtm] DataBase: ' + data);
    // Close the client socket completely
    client.destroy();
    
});

// Add a 'close' event handler for the client socket
client.on('close', function() {
    console.log('Connection closed');
});


Конектится и получаю ответ:
Код: javascript
1.
2.
3.
4.
5.
[root@gtmdatabase node]# node client.js
CONNECTED TO: 192.168.1.111:6969
Data returned from [gtm] DataBase: GT.M V6.2-002A Linux x86_64
Connection closed
[root@gtmdatabase node]#


До меня не доходит, как это соединение не разорвать, а чтоб она постоянно была,
пока пользователь не закроет ее.
(Понятно, здесь в коде явно закрывается по команде.)
Но я например хочу еще использовать какие-то функции, вызовы и тд.
Как-то мне трудно приходится все это осилить, когда всю жизнь кодил на М да еще на Васик ...
Это обьявить бы модально, но как- не мого понять...
Для чего это было хорошо:
Написать буквально ПАРУ ФУНКЦИЙ и можно перевернуть горы.
Какие клиентские приложения WEB-кие получались бы !...
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028613
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuКак-то мне трудно приходится все это осилить, когда всю жизнь кодил на М да еще на Васик ...
Это обьявить бы модально, но как- не мого понять...
Качай книжку "Node.js в действии"
http://rus-torrents.com/viewtopic.php?t=58707&view=newest
http://nnm-club.me/forum/viewtopic.php?t=835064

Там примеры есть. Правда она не все рабочие... Но подправить можно.
Как все установить на дабы попробовать - на Ангулар есть пошаговая инструкция.
http://angular-doc.herokuapp.com/tutorial
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028614
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример сервера для чата

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
var http = require('http');
var fs = require('fs');
var path = require('path');
var mime = require('mime');
var cache = {};
function send404(response) {
	response.writeHead(404, {'Content-Type': 'text/plain'});
	response.write('Error 404: resource not found.');
	response.end();
};
function sendFile(response, filePath, fileContents) {
	response.writeHead(
		200,
		{"content-type": mime.lookup(path.basename(filePath))}
	);
	response.end(fileContents);
};
function serveStatic(response, cache, absPath) {
	if (cache[absPath]) {
		sendFile(response, absPath, cache[absPath]);
	} else {
		fs.exists(
			absPath, 
			function(exists) {
				if (exists) {
					fs.readFile(
						absPath, 
						function(err, data) {
							if (err) {
								send404(response);
							} else {
								cache[absPath] = data;
								sendFile(response, absPath, data);
							}
						}
					);
				} else {
					send404(response);
				}
			}
		);
	}
};
// Создание HTTP-сервера с помощью анонимной функции, определяющей его поведение при выполнении запросов
var server = http.createServer(
	function(request, response) {
		var filePath = false;
		if (request.url == '/') {
			// Определение HTML-файла, обслуживаемого по умолчанию
			filePath = 'public/index.html';
		} else {
			// Преобразование URL-адреса в относительный путь к файлу
			filePath = 'public' + request.url;
		}
		var absPath = './' + filePath;
		// Обслуживание статического файла
		serveStatic(response, cache, absPath);
	}
);
server.listen(
	3000, 
	function() {
		console.log("Server listening on port 3000.");
	}
);
var chatServer = require('./lib/chat_server');
chatServer.listen(server);
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028674
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Сервер не нужен. Он есть на GT.M стороне.
Меня интересует создание клиентских функций для сокета node.js
Вроде что-то нащупал.

connect.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
net = require('net');
 HOST = '192.168.1.111';
 PORT = 6969;
 client = new net.Socket();
 client.connect(PORT, HOST, function() {
 //console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});
// и ВСЕ !!


xecute.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var client = require('./connect');
  var xecute = function(str) {
  client.write('XE ' + str + '\r\n');
};
  client.on('data', function(data) {
  return data;
console.log(xecute('w $zv'));
});


функцию с возвратом пока не могу запускать ...
А книжки читаемс
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028801
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuСервер не нужен. Он есть на GT.M стороне.
Значит у нас разное понимание тех серверов...

В Кащее работает связка ИИС+CSP... При использовании Node.js нужен сервер аналогичный CSP.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39028993
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, давайте немного уточним:
NodeJS (например, модуль express) будет "сервером" для браузера пользователя.
И для обработки некоторых его (браузера) запросов, NodeJS будет вызывать (через модуль net) ваш API сервер на GT.M , так?
Учитывая природу web, есть ли смысл держать постоянное соединение с GT.M?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029023
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Я немножко по другому это представляю.
В чем замысел этой затеи ?
На линукс сервер установлен gt.m
Там же, установлен node.js.
Через демон xinetd, запускаю некое СЕРВЕРНОЕ приложение(рутину) на gt.m,
которое слушает соединение на порту 6969 и в зависимости,
что получает от клиента (в нашем случае является
КЛИЕНТСКОЕ TCP приложение node.js на этом же сервере, заметьте - не СЕРВЕРНОЕ !)
отправляет обработанные данные М рутины, в некоторой клиентской функции node.js.
Дальше, делаем что хотим с этими данным из этой функции.
Отображаем например на web странице !
Сумбурно, но где-то так.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029055
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, насколько я понял теперь, вопрос у вас в организации кода на NodeJS?
Т.е., что (как) написать в обработчике client.on('data', function( data ){ ... }), чтобы реализовать собственный протокол обмена с сервером API?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029060
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Да. Совершено верно.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029072
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, тогда нам надо переходить на другую ветку форума.
Ибо общение с tcp-сервером GT.M будет отличаться от общения с любым другим tcp-сервером только порядком обмена и передаваемыми значениями.
Но, как концепт
как-то так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
/** @module my/protocol */
var net = require('net');

/**@constructor*/
function Protocol( opts ){
 
   this.host = opts.host || '192.168.1.111';
   this.port = opts.port || 6969;
   this.client =new net.Socket();
   this.connected = false;

   var protocol = this, client = protocol.client;
  // event bindings
   client.connect( protocol.port, protocol.host, protocol.onConnect );
   client.on('close', function(){  protocol.connected = false; });

}

/** */
Protocol.prototype.onConnect = function( data ){
    var protocol = this;  protocol.connected = true;
    console.log('Connected to: ' + protocol.host + ':' + protocol.port);
    protocol.checkVersion();
};

/** */
Protocol.prototype.checkVersion = function(){
    var protocol = this, client = protocol.client;
    client.on('data', protocol.onCheckVersion ); //change handler
    client.write('XE w $zv \r\n');
};

/** */
Protocol.prototype.onCheckVersion = function( data ){
    var protocol = this, client = protocol.client;
    if ( data.indexOf("GT.M") == -1 ) {
        client.destroy(); return;
    }
    client.on('data', protocol.onAuthenticate ); //change handler once more
    client.write('XE d ^authenticate() \r\n');
};

/** */
Protocol.prototype.onAuthenticate = function( data ){
    ///... etc.
}

module.exports = Protocol;

...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029156
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Спасибо огромное !
Сейчас только разобраться еще как этот модуль запустить...
Я полный чайник в JS, но стараюсь... ;)
В смысле вызвать по отдельности функции.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029164
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Запуск
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
 var Protocol = require('my/protocol');

 /** handler customization */
 Protocol.prototype.onAuthenticate = function(data){
  // ... do something custom
 }

 var p = new Protocol({ host:'127.0.0.1', port: 6000 }); //run

...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029179
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
я написал на почту, но что-то вернуло с ошибкой
ящик тот что указан здесь ?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029181
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, теперь - да
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029195
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Получили что-то на почту ?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029270
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, да
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029329
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставлю 2 коп, хоть и не GT.M-щик.

Если NodeJS и M-СУБД находятся на одном сервере, привлекательной с т.з. производительности становится "прямая" связь между ними, которую обеспечивает call-in.
Обратили ли вы внимание на NodeM ? Утверждается, что он совместим по API с cache.node (снизу вверх, конечно).
Мои коллеги используют cache.node в разработках, впечатления хорошие.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029363
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovВставлю 2 коп, хоть и не GT.M-щик.

Если NodeJS и M-СУБД находятся на одном сервере, привлекательной с т.з. производительности становится "прямая" связь между ними, которую обеспечивает call-in.
Обратили ли вы внимание на NodeM ? Утверждается, что он совместим по API с cache.node (снизу вверх, конечно).
Мои коллеги используют cache.node в разработках, впечатления хорошие.
Раз зашла речь - то кто может прокомментировать исходник?
https://github.com/dlwicksell/nodem/blob/master/src/v4wNode.m
В нем есть после меток двоеточия. Что это означает в GT.M?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39029389
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я,

не без труда нашёл в их док-ии : Labels
...
In GT.M, a colon (:) delimiter may be appended to the label, which causes the label to be treated as "local." Within the routine in which they appear, they perform exactly as they would without the trailing colon but they are available only during compilation and inaccessible to other routines and to indirection or XECUTE. Because references to local labels preceding their position in a routine produce a LABELUNKNOWN error at run-time, FIS recommends omitting the routinename from labelrefs to a local label. Using local labels reduces object size and linking overhead for both all types for dynamic linking except indirection and XECUTE. Use of local labels may either improve or impair performance; typically any difference is modest. The more likely they are to all be used within the code block at run-time, the more likely an improvement. In other words, conditional code paths which prevent all references to local variables appearing in the block may actually impair performance.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39055441
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я получил эти данные на клиентской стороне
со стороны сервера GT.M примерно за 2 min. 30 sec. ,( т.е. 2 000 000 строк ) используя TCP client Node.jstest(var1,var2,var3,Ret) ;;Compilation tools WinBuilder
 s ^v1=var1,^v2=var2,^v3=var3
 s var1="Variable v1",var2="Variable v2",var3="Variable v3"
 f i=1:1:2000000 s Ret(i)="Array test string nr. "_i_"   var1="_var1_"   var2="_var2_"   var3="_var3_$c(13,10)
 q "GT.M <Q> Return "_iСервер обычная машина - Intel(R) Celeron(R) CPU G1610 2.60GHt RAM 16 Mgb
Интересно, это хороший результат или нет ?
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39055593
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл уточнить. И клиент и сервер находятся
на одной машине, т.е. 2 в одном. Эти данные я увидел
в логи js через терминал Putty.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39055660
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тривиально, чз VPN из дому - 2 мин . Ровно ...
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39068098
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте !

Кто может подсказать по поводу отображения
данных на странице при помощью Node js ?
Наблюдаю такую ситуацию:
При поступления первого события со стороны клиента (страница WEB),
GT.M записывает возвращает некоторые данные - все ОК.
При повторном некоторых изменения на клиенте, GT.M записывает
данные, но при возврате, отображаются старые значения.
Перезагрузка страницы помогает решить вопрос, но хочется без этого ...
Я теряю $job..

Спасибо.
test(var1,var2,var3,Ret) ;;Compilation tools WinBuilder :[02.10.2015 09:45:36]
 s ^v1=var1,^v2=var2,^v3=var3
 s name=var2
 s var1="Now Runing Job: "_$job,var2="Variable v2",var3="Variable v3"
 f i=1:1:50 s Ret(i)="Array test string nr. "_i_"   var1="_var1_"   var2="_name_"   var3="_var3_$c(13,10)
 q "GT.M Q Return "_i
var http = require('http'),
    querystring = require('querystring'),
    utils = require('util');
    client = require('/home/node/client');

http.createServer(function (req, res) {
    // set up some routes
    switch(req.url) {
        case '/':
            // show the user a simple form
            console.log("[200] " + req.method + " to " + req.url);
            res.writeHead(200, "OK", {'Content-Type': 'text/html'});
            res.write('<html><head><title>Hello Noder!</title></head><body>');
            res.write('<h1>Welcome Noder, who are you?</h1>');
            res.write('<form enctype="application/x-www-form-urlencoded" action="/formhandler" method="post">');
            res.write('Name: <input type="text" name="username" value="Valeriu Gontia" />');
            res.write('Age: <input type="text" name="userage" value="56" />');
            res.write('<input type="submit" />');
            res.write('</form></body></html');
            res.end();
            break;

        case '/formhandler':

            if (req.method == 'POST') {
                console.log("[200] " + req.method + " to " + req.url);
                var fullBody = '';

                req.on('data', function(chunk) {
                    // append the current chunk of data to the fullBody variable

                    fullBody += chunk.toString();
                });
                req.on('end', function() {

                    client.connect();
                    var ret = '';
                    client.doFunction('test^nodejs',  'test12', fullBody,'test123', ret);
                    console.log("mvar " + client.m_var[4]);


                    // request ended -> do something with the data
                    res.writeHead(200, "OK", {'Content-Type': 'text/html'});

                    // parse the received body data
                    var decodedBody = querystring.parse(client.m_var[4]);
                    // var decodedBody = querystring.parse(fullBody);

                    // output the decoded data to the HTTP response
                    res.write('<html><head><title>Post data</title></head><body><pre>');
                    res.write(utils.inspect(decodedBody));
                    res.write('</pre></body></html>');
                    res.end();
                });

            } else {
                console.log("[405] " + req.method + " to " + req.url);
                res.writeHead(405, "Method not supported", {'Content-Type': 'text/html'});
                res.end('<html><head><title>405 - Method not supported</title></head><body><h1>Method not supported.</h1></body></html>');
            }

            break;
        default:
            res.writeHead(404, "Not found", {'Content-Type': 'text/html'});
            res.end('<html><head><title>404 - Not found</title></head><body><h1>Not found.</h1></body></html>');
            console.log("[404] " + req.method + " to " + req.url);
    }
}).listen(8124); // listen on tcp port 8124 (all interfaces)
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39068134
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему срабатывает кеш где то, между node.js и браузером еще кто-то есть, кто может кешировать ?
да тот же прокси, может делать так
нужно поставить запрет кеширования в заголовках
Код: plaintext
1.
2.
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
или так на node.js
Код: javascript
1.
2.
3.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.


подробнее можно тут почитать
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39070667
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Для gt.m отлично подходит шлюз mgwsi, взаимодействующий с php скрипт.
Пишем в script.php типа
Код: php
1.
m_html("label^programm",$_array);

Данные из gt.m идут потоком через write !!!
php скрипт можно на стороне сервера привязать как к Apache, так и вызывать через shell
Код: php
1.
2.
3.
4.
5.
6.
7.
 $fp=popen('script.php',"r");
  while(!feof($fp))
    {
        echo read($fp, 1024);
    }
    fclose($fp);
}
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39070827
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin Данные из gt.m идут потоком через write !!!
Один к одному - такой же подход.
Разница только в том, что ВСЕ должно
крутиться на Linux + GT.M + Node.js
WEB клиент приложение уже без разницы..
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39070934
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Если бы я использовал node.js, то рассмотрел бы вот эту технологию EWD.js http://ec2.mgateway.com/ewd/ws/index.html
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39071462
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin,
Это понятно. Хочется что нибудь по проще
и побольше классического М.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39072275
Valeriu, а перепишите-ка, если хотите, вот этот файл boobst.m под GT.M, может быть Вам пригодится. В проекте и set'ы и get'ы и order'ы есть.
...
Рейтинг: 0 / 0
[gt.m] Node.js
    #39072551
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашепод GT.M, может быть Вам пригодится. В проекте и set'ы и get'ы и order'ы есть.

Спасибо. Скачал.
Даже удивлен, такой же подход только для Каше...
Я тоже использую M/Wire со своими доработками :
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
.......................
cmdKill(input)
 n $zt s $zt=$$zt()
 s gtmbuild("Node")=input
 i gtmbuild("Node")["zmwire" w "-No access allowed to this global"_separatorend q
 k @("^"_gtmbuild("Node"))
 s response="+OK"_separatorend
 w response
 k gtmbuild("Node")
 q
 ;
cmdData(input)
 n $zt s $zt=$$zt()
 s gtmbuild("Node")=input
 s gtmbuild("Value")=$d(@("^"_gtmbuild("Node")))
 w gtmbuild("Value")_separatorend
 q
 ;
cmdGet(input)
 s $zt=$$zt()
 s gtmbuild("Node")=input
 s gtmbuild("Value")=@("^"_gtmbuild("Node"))
 w gtmbuild("Value")
 w separatorend
 q
 ;
cmdKeepAlive(input)
  q
 ;
cmdQuery(input);
 n $zt s $zt=$$zt()
 s gtmbuild("Node")=input
 s gtmbuild("Value")=$q(@("^"_gtmbuild("Node")))
 w gtmbuild("Value")_separatorend
 q
 ;
cmdOrder(input)
 n $zt s $zt=$$zt()
 s gtmbuild("Node")=$p(input,$c(0),1)
 s flag=$p(input,$c(0),2)
 i flag=1 d
 . s gtmbuild("Value")=$o(@("^"_gtmbuild("Node")))
 . w gtmbuild("Value")_separatorend
 i flag=0 d
 . s gtmbuild("Value")=$o(@("^"_gtmbuild("Node")),-1)
 . w gtmbuild("Value")_separatorend
 q
 ;
cmdSet(input)
 n $zt s $zt=$$zt()
 s gtmbuild("Node")=$p(input,$c(0),1)
 s gtmbuild("Value")=$p(input,$c(0),2)
 s @("^"_gtmbuild("Node"))=gtmbuild("Value")
 ;s response="+OK"_separatorend
 ;w response
 k gtmbuild("Node"),gtmbuild("Value")
 q
 ;
cmdXe(input)
 ;
 ; i input["^zmwire" w "No access allowed to this global"_separatorend q
 s gtmbuild("Xecute")=input
 n $zt s $zt=$$zt()
 x "New gtmbuild "_gtmbuild("Xecute")
 s $zt=""
 w separatorend
 k gtmbuild("Xecute"),gtmbuild
 w !
 q
 ;
cmdDo(input)
 ;
 n flag,rtn,head,cik,i,nprm,array,data,ByRef
 s head=$p(input,$c(0))
 s rtn=$p(head,"~",1)       ; RoutineLabel^RoutineName
 s nprm=$p(head,"~",2)      ; nr.parameters
 s flag=$p(head,"~",3)      ; flag
 s lenAll=$p(head,"~",4)    ; len all  -It's not used
 s lenP1=$p(head,"~",5)     ; len par1 -It's not used
 s lenP2=$p(head,"~",6)     ; len par2 -It's not used
 s lenP3=$p(head,"~",7)     ; len par3 -It's not used
 s lenP4=$p(head,"~",8)     ; len par4 -It's not used
 s lenP5=$p(head,"~",9)     ; len par5 -It's not used
 s lenP6=$p(head,"~",10)    ; len par6 -It's not used
 s lenP7=$p(head,"~",11)    ; len par7 -It's not used
 s lenP8=$p(head,"~",12)    ; len par8 -It's not used
 s lenP9=$p(head,"~",13)    ; len par9 -It's not used
 s lenP10=$p(head,"~",14)   ; len par10 -It's not used
 s lenP11=$p(head,"~",15)   ; len par11 -It's not used
 s lenP12=$p(head,"~",16)   ; len par12 -It's not used
 s lenP13=$p(head,"~",17)   ; len par13 -It's not used
 s lenP14=$p(head,"~",18)   ; len par14 -It's not used
 s lenP15=$p(head,"~",19)   ; len par15 -It's not used
 s lenP16=$p(head,"~",20)   ; len par16 -It's not used
 ;
 ; Passing parameters ByRef label^routine(.var1,.var2, ... .var16) return records or Array !!!
 s gtmbuild("gtmstring")=rtn_"("
 f i=2:1:nprm+1 d
 . s gtmbuild("ByRef",i)=$p(input,$c(0),i)
 . s ByRef=".ByRef"_i s gtmbuild("gtmstring")=gtmbuild("gtmstring")_(ByRef_","),passing="ByRef"_i,@passing=gtmbuild("ByRef",i)
 s $e(gtmbuild("gtmstring"),$l(gtmbuild("gtmstring")))=")"
 i nprm=0 s gtmbuild("gtmstring")=rtn ; with no parameter in function
 k i
 i flag="R" d
 . w ""_separator ; Return pseudo parameter ("")
 . n $zt s $zt=$$zt()
 . x "New gtmbuild Do "_gtmbuild("gtmstring")
 . s $zt=""
 . f i=2:1:nprm+1 d
 . . i $d(@("ByRef"_i))\10=0 w @("ByRef"_i)
 . . e  f cik=0:1 s array=$q(@("ByRef"_i_"("_cik_")")) q:array=""  w @array
 . . k @("ByRef"_i)
 . . w separator  ; Separator fragments
 i flag="F" d
 . n $zt s $zt=$$ztx()
 . x "New gtmbuild s ByRef=$$"_gtmbuild("gtmstring")
 . s $zt=""
 . w ByRef_separator
 . f i=2:1:nprm+1 d
 . . i $d(@("ByRef"_i))\10=0 w @("ByRef"_i)
 . . e  f cik=0:1 s array=$q(@("ByRef"_i_"("_cik_")")) q:array=""  w @array
 . . k @("ByRef"_i)
 . . w separator  ; Separator fragments
 w endfragment    ; END Separator
 w !
 q
 ;;

...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Node.js
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]