Robert Cemper · Mar 2, 2021 go to post

@9.9.  storage is generated once if not existing yet.
you may change it manually (typically data location global) as long as there is nothing stored yet
otherwise you lose the existing content. Or you copy it to the new location.
My article The adopted Bitmap shows such an example [actually also in contest}

Robert Cemper · Mar 1, 2021 go to post

6 & 7 are side effects of object inheritance.
Think of a class Person.
But Employee Extends Person
Similar Students Extends Person too
So you have 3 tables but all are Persons  Some with extension some not.  

@6: Table Employee corresponds to class Person and to class Employee

@7: So class person corresponds to Table PERSON, EMPLOYEE , STUDENT

Robert Cemper · Feb 24, 2021 go to post

Depending on the environment you use embedded SQL the variable SQLCODE may not reach you. This is related to variable scoping. Therefore it is better to use any variant of Resultset.
For variable scoping see my article here 

Robert Cemper · Feb 19, 2021 go to post

<CLASS DOES NOT EXIST>%Close...
is typical if try to access resultset or just delete rset  after leaving namespace %SYS.
Just reproduced it.

%SYS>w !,rset.%Next(),?5,rset.%Get("Directory"),!?30,rset.%Get("Size"),?40,rset.%Get("MaxSize")
 1    c:\intersystems\iris\mgr\enslib\
                              163       Unbegrenzt
%SYS>ZN "USER" 
USER>k rset
<CLASS DOES NOT EXIST>%CloseCursor+3^%SQL.ClassQueryResultSet.1 *SYS.Database
USER>
Robert Cemper · Feb 19, 2021 go to post

#1 there is no "SELECT LAST_SERIAL()" 

#2 depending what your expectation on LAST is I see 2 possible workarounds
#2A LAST = max:    "SELECT MAX(test_id) FROM test
#2B LAST = latest: "SELECT test_id, MAX(ID) FROM test GROUP BY  2"

#2B is based on the fact that you always have an  auto-incremented ID and it's a shortcut of
"SELECT test_id  FROM test where id = (SELECT max(ID) from junior.test)"
or
"SELECT TOP 1 test_id FROM test WHERE ID < 999999999999999999 ORDER BY ID DESC

Robert Cemper · Feb 18, 2021 go to post

What I asked for:

In your Method written in Objectscript, after 
&sql(update X_X.X  set LocalEnvironment=1 where %ConfigName IN('X_X_X''Y_Y_Y'))

Variable SQLCODE holds a success / failure code.  That's what I asked for.
see this example: 
https://docs.intersystems.com/iris20201/csp/docbook/Doc.View.cls?KEY=GSQL_esql#GSQL_esql_syntax_ampsql
or 
https://docs.intersystems.com/iris20201/csp/docbook/Doc.View.cls?KEY=GSQL_esql#GSQL_esql_code_literals
and
https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=RERR_sql#RERR_C136606

Robert Cemper · Feb 18, 2021 go to post

You may stick with '/' and run $TRANSLATE(record,"/","~")
just before writing the record to your file.DAT

Robert Cemper · Feb 18, 2021 go to post

did you try ! or  ? instead of ~ 
since ~ might be a reserved default separator to HL7

Robert Cemper · Feb 18, 2021 go to post

What does SQLCODE tell you after your embedded SQL query?
What is your real $ZV ?

Robert Cemper · Feb 8, 2021 go to post

I was searching this but looked for ManagerDirectory  instead of InstallDirectory

Robert Cemper · Feb 8, 2021 go to post

write $replace(##class(%File).ManagerDirectory(),"mgr","lib")

independent of OS!

Robert Cemper · Feb 8, 2021 go to post

All %R* routines are hidden in IRIS for good reasons.
And they just survived for backward compatibility not for common use.
And they use ZS ZI, ...  and $Compile() function. ... and a bunch of $ZU(..)  
Manipulating routines from Terminal is not covered. VScode or Studio is expected and supported 

Robert Cemper · Feb 8, 2021 go to post

If you edit .INT routines from the terminal in the old MUMPS style using
             ZLOAD, ZSAVE, edit by  X ^%
you operate at a lower level than Studio, VScode, Atelier,... 
and deeper than any Source Control Hooks. 
Neither belt nor suspenders are available anymore.

It's like heart surgery: Either you fix it or your patient is gone.  

Robert Cemper · Feb 5, 2021 go to post

the second line of the error msg tells you that SQLserver raised error 102

This error occurs when Adaptive Server detects a syntax error in a Transact-SQL® command or query. This error can occur when: A keyword is misspelled. ... You used a variable for a database name and your query contains a parser errorerror 102 is raised because the batch was never executed.
from:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00729.1500/html/errMessageAdvRes/CHDGFCCJ.htm
suggestion: Check the SQL-name of the generated class samples.people

Robert Cemper · Feb 5, 2021 go to post

Developing in the production environment is "high-risk extra class".
This doesn't exclude to do development on the production SERVER (e.g by lack of HW)
The most simple option is to have 3 namespaces in parallel. PRODUCTION (aka WORK), TEST, DEVELOPMENT.
A better variant is to have a 2nd instance on the same SERVER machine for  TEST & DEVELOPMENT.
Git doesn't care which Instance you use.
ZMP is not availaible in Caché.
Docker is theoretically possible but quite an effort as you need to build your own image especially for a WIN environment and get the appropriate license for it.

Robert Cemper · Feb 3, 2021 go to post

set diff=3600   ; time in sec
set new=$zdth($zdt($h,-2)-diff,-2) ; new $h - 1 hour
Robert Cemper · Feb 2, 2021 go to post

Thank you for the link.
My urgency has changed meanwhile and I don't have access to the data source anymore. 
Nevertheless, the problem is a general one.

Robert Cemper · Feb 2, 2021 go to post

Line 1: 

<?xml version="1.0" encoding="UTF-8"?>

Check all <?   tags if they only contain ASCII characters  (no UTF yet)
Offset 106  indicates that it is rather at the end of line.
Could be some windows newline <CR><LF> instead of  Linux/Unix newline <LF> or similar

Robert Cemper · Feb 1, 2021 go to post
  • I run apt-get during development
  • I edit various files
  • and I WANT TO HAVE FULL CONTROL over my environment at any level
  • and I hate any limiting in MY code

So, what's wrong with that?