skills/scanning-for-deprecated-code/SKILL.md
# Scanning for Deprecated Code The class %SYSTEM.CodeScanner enables you to quickly find code that refers to deprecated classes and deprecated class members. This class provides two class queries, described here. ## 1 ScanDocuments Query The ScanDocuments class query returns a result set that contains the following fields: - Document identifies the class or routine that contains the reference. F or example: - ResearchXForms.BasicDemo.cls Location identifies the location of the reference, w
npx skillsauth add sorodriguezz/skills-objectscript skills/scanning-for-deprecated-codeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The class %SYSTEM.CodeScanner enables you to quickly find code that refers to deprecated classes and deprecated class members. This class provides two class queries, described here.
The ScanDocuments class query returns a result set that contains the following fields:
Document identifies the class or routine that contains the reference. F or example:
ResearchXForms.BasicDemo.cls
Location identifies the location of the reference, within the gi ven class or routine. For example:
ClassMethod CreateOne Implementation+4
Class '%Library.FileBinaryStream' is deprecated.
By default, the query scans only classes and routines in the default routine database for the current namespace, although you can pass a parameter to include mapped code. Also, the query ignores classes and routines that have names starting with %, as well as any classes that are marked as deprecated.
The query is projected to SQL as the %SYSTEM.ScanDocuments stored procedure.
The ScanDocument class query takes one argument document, which is the name of a class, MAC routine, or INT routine. This argument includes the file e xtension, for example: MyPkg.MyClass.cls
This query returns a result set that contains the following fields:
Location indicates the line number or class keyword describing where the deprecated reference is, within the given code item.
Message string describing the deprecated reference.
For example, you could write code as follows:
Scanning Mapped Code
Class Member
ClassMethod Check() { set stmt = ##class(%SQL.Statement).%New() set status = stmt.%PrepareClassQuery("%SYSTEM.CodeScanner","ScanDocuments") if $$$ISERR(status) {quit} set rset = stmt.%Execute() if rset.%SQLCODE<0 {quit}
while rset.%Next() { set Document=rset.%Get("Document") set Location=rset.%Get("Location") set Message=rset.%Get("Message") write !, Document_" "Location" "_Message } }
The following shows example output:
ResearchXForms.BasicDemo.cls Property BinStream Type Class '%Library.GlobalBinaryStream' is deprecated. ResearchXForms.BasicDemo.cls Property CharStream1 Type Class '%Library.GlobalCharacterStream' is deprecated. ResearchXForms.BasicDemo.cls Property CharStream2 Type Class '%Library.GlobalCharacterStream' is deprecated. ResearchXForms.BasicDemo.cls Property CharStream3 Type Class '%Library.GlobalCharacterStream' is deprecated. ResearchXForms.BasicDemo.cls ClassMethod CreateOne Implementation+4 Class '%Library.FileBinaryStream' is deprecated. ResearchXForms.BasicDemo.cls ClassMethod RoundTripBin Implementation+1 Class '%Library.FileBinaryStream' is deprecated.
By default, the query scans only classes and routines in the default routine database for the current namespace. To include classes and routines from mapped databases, specify the query argument as 1, by passing that argument when executing the class query. For example:
Class Member
ClassMethod Check() { set stmt = ##class(%SQL.Statement).%New() set status = stmt.%PrepareClassQuery("%SYSTEM.CodeScanner","ScanDocuments") if $$$ISERR(status) {quit} set rset = stmt.%Execute(1) if rset.%SQLCODE<0 {quit}
while rset.%Next() { set Document=rset.%Get("Document") set Location=rset.%Get("Location") set Message=rset.%Get("Message") write !, Document_" "Location" "_Message } }
data-ai
# XDBC Gateway XDBC Gateway Overview The XDBC Gateway provides a single interface for connecting InterSystems IRIS® to an external database with JDBC or ODBC. It acts as the modern, streamlined successor to the SQL Gateway. The XDBC Gateway acts like a JDBC or ODBC driver and lets you perform any of the following operations: - Access data stored in third-party relational databases within InterSystems IRIS applications. - Store persistent InterSystems IRIS objects in external relational data
devops
# Windows Installation Guide Windows Installation Overview The Windows Installation Guide provides guidance on installing kit-based deployments on Microsoft Windows. ### 1.1 How to Use This Guide For all installations, you should begin with the Pre-Installation steps. You can then follow the steps for either an attended or unattended installation. The attended installation process is different depending on the setup type you choose. After following the steps for attended installations, use t
testing
# Windows Installation Details Windows User Accounts When installing InterSystems IRIS, you must choose the Windows user account to run the InterSystems service, InterSystems IRIS Controller for <instance-name>. There are two options: - The default SYSTEM account (Windows Local System account). This is used in Minimal security installations. - A defined Windows user account. This account must have interactive login privileges for the duration of the installation; they can be revoked after.
tools
# Web Gateway Guide C.2.1 Method 1: Building the CSP Module as Shared Object with apxs (APache eXtenSion) Appendix D: Add the Web Gateway to a Locked-Down Apache Installation (UNIX®/Linux/macOS) The Web Gateway: Serve InterSystems Web Applications and REST APIs to a Web Client An InterSystems IRIS® web application consists of code which provides content dynamically to a web client (usually a web browser) in response to a request. The InterSystems Web Gateway makes this possible: it is a soft