Pesquisar

Artigo
· Jul. 27 2min de leitura

JSON形式のファイルを読み書きするサンプル

これは InterSystems FAQ サイトの記事です。
 

ダイナミックオブジェクトの%FromJSONFileメソッドを利用すると簡単にJSON形式のファイルの内容をダイナミックオブジェクトにコピーすることができます。

以下の形式のJSONファイルをそのメソッドを使用して取り込む例は以下のようになります。

{
    "ShipTo": {
        "City": "Tokyo",
        "Street": "Ginza",
        "PostalCode": "160-0001"
    },
    "CustomerId": 1,
    "Items": [
        {
            "ProductId": "MNT001",
            "Amount": 2
        },
        {
            "ProductId": "PC001",
            "Amount": 2
        }
    ]
}
 set tempobj = {}.%FromJSONFile("c:¥temp¥sample.json") 
 set customerid = tempobj.CustomerId           
 set iter = tempobj.Items.%GetIterator()
       
 while iter.%GetNext(.key,.val) {
   set line = {}.%FromJSON(val)
   set productid = val.ProductId
   set amount = val.Amount
 }
       
 zwrite

反対にダイナミックオブジェクトをJSON形式のファイルに書く方法は以下の様になります。

(上記の例のtempobjをそのまま出力対象として使用しています)

 set outputstream = ##class(%Stream.FileCharacter).%New()
 set outputstream.TranslateTable = "UTF8"
 set outputfilename = "C:¥temp¥sample2.json"
 set status = outputstream.LinkToFile(outputfilename)
 set status = tempobj.%ToJSON(outputstream)
Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Jul. 27 4min de leitura

ODBCログの取得方法(Windows)

これは InterSystems FAQ サイトの記事です。
 

ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます

ODBCログの有効化については以下をご参照ください。

ODBCログの有効化

Windowsの場合は、上記に記載されている通り、2種類のログが取得できます。

  • クライアント・ドライバのログを有効にするには、ODBCデータソースアドミニストレータで使用しているDSNの「ODBCログ」チェックボックスをチェックします。 

 

 

  • ドライバー・マネージャのログを有効にするには、[トレース]タブをクリックして[トレースの開始]ボタンをクリックします。

   

変更の反映にはODBCクライアントアプリケーションを再起動する必要があります。

既定のODBCクライアントログファイル名は IRISODBC.log で、既定の場所は C:¥Users¥Public¥Logs です。

既定のトレースログ名は、SQL.logで、既定の場所は、c:¥Users¥<ユーザー名>AppData¥Local¥Temp¥です。

(すべてのユーザーIDのコンピュータ全体のトレースをチェックしない場合)

複数回ODBCリクエストが実行された場合、上書きではなくログが追記されます。

クライアントのプロセス毎に個別にログを取得することもできます。

クライアントログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At: Tue Mar 25 22:44:02 2025
	Driver Name:	IrisODBC3564.DLL
	Unicode Client Version:	2024.2.0.247.0
	Compiled at:	Jul 16 2024 09:17:19
	ODBC Version:	03.51
	Locale Setting:	Japanese_Japan.932
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LoadConnect returned: 0x4DBC0000
LoadConnect returned sm_pfnIRISconnectToHostPort: 0x4DBC6750
LoadConnect returned sm_pfnIRISconnectSend: 0x4DBC62B0
LoadConnect returned sm_pfnIRISconnectRecv: 0x4DBC5E70
LoadConnect returned sm_pfnIRISconnectClose: 0x4DBC2CA0
LoadConnect returned sm_pfnIRISconnectGetErrorCode: 0x4DBC34C0
LoadConnect returned sm_pIRISconnectGetErrorText: 0x4DBDC000
LoadConnect returned sm_pfnIRISconnectGetSecurityLevel: 0x4DBC35F0
LoadConnect returned sm_pfnIRISconnectSetSecurityLevel: 0x4DBC6670
LoadConnect returned sm_pfnIRISconnectGetSocketDescriptor: 0x4DBC3610
LoadConnect returned sm_pfnIRISconnectLoginToHostPort: 0x4DBC4AE0
LoadConnect returned sm_pfnIRISconnectGeneratePrincipalName: 0x4DBC3120
LoadConnect returned sm_pfnIRISconnectGetLicenseId: 0x4DBC3530
LoadConnect returned sm_pfnIRISconnectSetTraceFilePtr: 0x4DBC6740
LoadConnect returned sm_pfnIRISconnectGetTSClientName: 0x4DBC3620
LoadConnect returned sm_pfnIRISconnectSetLocalBindings: 0x4DBC64E0
LoadConnect returned sm_pfnIRISconnectSetMode: 0x4DBC6630
LoadConnect returned sm_pfnIRISconnectGetRdlen: 0x4DBC35E0
GetLocalizedResources: (03/25/25-22:44:02:636) Found resources for locale JPN (400) in C:\Program Files\Common Files\InterSystems\IRIS\IrisODBCJPN.DLL
--> ConfigDSNW: (03/25/25-22:44:02:636) hParent = 0x000a1350 request 2
<-- ConfigDSNW: (03/25/25-22:44:11:189) returning 1

 

トレースログが正常に取得できている場合、以下の様な内容が書き込まれます。

 


EXCEL           acec-31b4	ENTER SQLAllocHandle 
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0
EXCEL           acec-31b4	EXIT  SQLAllocHandle  with return code 0 (SQL_SUCCESS)
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0 ( 0x000002D11D6A1070)

EXCEL           acec-31b4	ENTER SQLSetEnvAttr 
		SQLHENV             0x000002D11D6A1070
		SQLINTEGER                 200 <SQL_ATTR_ODBC_VERSION>
		SQLPOINTER                 3 <SQL_OV_ODBC3>
		SQLINTEGER                  -6 

 

ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Jul. 27 1min de leitura

WEBGatewayのサーバー設定項目で、Minimum Server Connections、Maximum Server Connectionsの項目が表示されない

これは InterSystems FAQ サイトの記事です。

「Maximum/Minimum_Server_Connections」の設定で、ApacheのMPM(Multi Processing Module)設定が、prefork になっている場合、Apache ワーカープロセスあたり2つ以上の IRIS/Caché コネクションを設定しても意味がないために、設定自体出来なくなっております。

※ preforkでは1つのプロセスが1つのスレッドを持ちます。

preforkの詳細は以下をご参照ください

MPM prefork/worker/eventの違い

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Jul. 27

How to Calculate Time Differences in Hours Between Two Timestamps in ObjectScript?

Hi all,

I’m working on a data transformation in IRIS where I need to calculate the difference in hours between two timestamps stored as %TimeStamp.

Example:

Set startTime = "2024-07-12 08:30:00"
Set endTime = "2024-07-12 15:15:00"

I’d like to calculate the number of hours (with decimals, like 6.75) between them. What's the recommended way to do this in ObjectScript? I’ve seen examples using $ZDATETIME, but I’m not sure if that’s the cleanest approach.

Any suggestions or best practices would be appreciated!

Thanks,
Jhonn Marie

3 Comments
Discussão (3)3
Entre ou crie uma conta para continuar
Artigo
· Jul. 27 2min de leitura

Reviews on Open Exchange - #54

If one of your packages on OEX receives a review you get notified by OEX only of YOUR own package.   
The rating reflects the experience of the reviewer with the status found at the time of review.   
It is kind of a snapshot and might have changed meanwhile.   
Reviews by other members of the community are marked by * in the last column.

I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.    
Some were accepted and merged, and some were just ignored.     
So if you made a major change and expect a changed review, just let me know.

# Package Review Stars IPM Docker *
1 iris-python-article excellent 6* 6.0   y  
2 iris4word Super Package 6* 6.0 y y  
3 Global-Inspector finally globals + COS + CSP 5.0 y   *
4 iris-telemetry-sample great demo 5.0   y  
5 metabase-iris-driver attractive add-on 5.0   y  
6 templated_email well prepared 5.0 y y  
7 typeorm-iris impressive solution 5.0   y  
8 wsgi-to-zpm great tool 5.0 y y  
9 dc-artisan docker part runs fine 4.8 y y  
10 IrisTest now working as described 4.8 y y  
11 iris-message-search looks friendly 4.7 y y  
12 toolqa incomplete yet 3.8   y  
13 addsearchtable useful idea 3.7 y y  
14 iristest-html a nice idea 3.5 y    
15 PyObjectscript Gen mostly working 3.0      
2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar