Robert Cemper · Jan 14, 2021 go to post

Caché has a nice example in namespace SAMPLES how to upload a stream of any length:  
/csp/samples/upload.csp.   
 

Robert Cemper · Jan 13, 2021 go to post

 Is there a way or tool available to take the source files and create an XML file which can be used for deployment to Ensemble? 

YES: 
$system.OBJ.Export(....)
$system.OBJ.Load(...)
docs & details
 

This works on Caché/Ensemble not just IRIS

Robert Cemper · Jan 13, 2021 go to post

your code is : 

 Set classname mobj.FindClassName(SchemaName_"."_TableName)

 Set mgr.TableName SchemaName_"."_TableName
 Set mgr.ClassName classname

The class  to Export:  Class Persistent.PersonBackup Extends %Persistent

BUT you call it:

do setupExportImport^uTask12440("Export","PERSISTENT","PERSONBACKUP")

There is no class PERSISTENT.PERSONBACKUP
Try instead:

do setupExportImport^uTask12440("Export","Persistent","PersonBackup")

So the generator can find your class

Robert Cemper · Jan 11, 2021 go to post

Oh, dear!
I saw something similar ~'86  running on VAX/VMS (or was it RSX-11/M ?) with some specialised keyboard

Robert Cemper · Jan 11, 2021 go to post

@Sergei Shutov   $e(112345678) prevents you to pass N>9

           1
          121
         12321
        1234321
       123454321
      12345654321
     1234567654321
    123456787654321
   12345678987654321
  123456781087654321
 123456781187654321
123456781287654321
 123456781187654321
  123456781087654321
   12345678987654321
    123456787654321
     1234567654321
      12345654321
       123454321
        1234321
         12321
          121
           1
 


@Julius Kavay    similar issue, but limit is 16

My interpretation was N>9  is any number >9

Robert Cemper · Jan 10, 2021 go to post

UTC: 2021-01-10 21:39:34

N<=9 :   73 chr

f i=1:1:N w ! f j=1:1:i,i-1:-1:1 w !?N-j f l=1:1:j {w l} f r=l-1:-1:1 w r

N>9 : 78 chr

f i=1:1:N w ! f j=1:1:i,i-1:-1:1 w !?N-j f l=1:1:j {w l#10} f r=l-1:-1:1 w r#10
 

eg: N=14

 
             1

             1
            121
             1

             1
            121
           12321
            121
             1

             1
            121
           12321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    1234567890987654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    1234567890987654321
   123456789010987654321
    1234567890987654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    1234567890987654321
   123456789010987654321
  12345678901210987654321
   123456789010987654321
    1234567890987654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    1234567890987654321
   123456789010987654321
  12345678901210987654321
 1234567890123210987654321
  12345678901210987654321
   123456789010987654321
    1234567890987654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1

             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    1234567890987654321
   123456789010987654321
  12345678901210987654321
 1234567890123210987654321
123456789012343210987654321
 1234567890123210987654321
  12345678901210987654321
   123456789010987654321
    1234567890987654321
     12345678987654321
      123456787654321
       1234567654321
        12345654321
         123454321
          1234321
           12321
            121
             1
Robert Cemper · Jan 5, 2021 go to post

Ahh! never seen before!  yes  seems to be in $$$IFDEFAULTHLTAGS

in %IFinclude.inc:
/// BDB666: default highlighting tags
#define IFDEFAULTHLTAGS "<b>,<font color=""red"">"

Robert Cemper · Jan 2, 2021 go to post

Ah! you look for isolated "ABC" and exclude it in context.
So you might need a ClassMethod as SQL Procedure to get the exact & isolated occurrence 
instead of $LENGTH().
Probably requiring some Regular Expression 
or plain looping on $FIND() and checking the borders 

Robert Cemper · Jan 2, 2021 go to post

try to extend your SQL statement like this

SELECT SUM(count) 
   (SELECT
      $LENGTH(TEXT,'ABC')-1 as count,
      Text
   FROM Post
   WHERE %ID %FIND search_index("TextIndex",'ABC')
 )
Robert Cemper · Dec 31, 2020 go to post

That's the way it works. You consume it once.
You'll get a mail once processed. But probably not this yearindecision

Robert Cemper · Dec 27, 2020 go to post

I just added a new and more actual example of using the traditional CPIPE device.
It has my personal preference over %Net.Remote.Utility as I feel to have more direct control. 
Here is the link to Open Exchange

Robert Cemper · Dec 25, 2020 go to post

OK. The first time I followed to the end. 
The code I was forced to produce by time pressure is so ugly and dirty that I refuse to publish it.
Nevertheless a  clear demonstration for what was ISOS (aka COS) NOT designed for:
Higher mathematical calculus, matrix transformations, arrays with independent dimensions, ....
[ Though I have to admit that I encountered tensors, rotors, matrix transformations, Mr. Fermat's theories, ... only at university 50+ years ago. And I didn't miss it in between angel]

There was no demand for the real strengths of IRIS!
In addition, I verified my personal credo that writing some code in ISOS/COS
only because it is possible makes no sense and is of no commercial value.
Especially with the broad range of options in  IRIS to include external code.   

Robert Cemper · Dec 24, 2020 go to post

Instead of fiddling into system internals, you may just map ^ERROR or better just the annoying part
to a different DB to see the impact. Then you clean up this one on a regular basis this DB,
Just Kill this branch. 
Or map it to IRISTEMP. It is cleaned at every restart.

Robert Cemper · Dec 23, 2020 go to post

It is written by the standard ERROR logger ^%ETN.int used allover system routines.
You can see it in SMP/ application errors. And it might be wise to examine it if it is growing so fast.

Robert Cemper · Dec 18, 2020 go to post

A GREAT improvement! yes

Though a challenge to the voters: They have to make a decision ! laugh

Robert Cemper · Dec 15, 2020 go to post

Hmm. The link to GM says:

Ooops!

Sorry friend, looks like this challenge is no longer available.

My title: " Never say IMPOSSIBLE with IRIS " 

Robert Cemper · Dec 10, 2020 go to post

I fully support you.
Out of tradition, there is a tendency to implement already existing solutions though  better
and well-positioned on the markets. 
@Dmitry Maslennikov :
- you might remember times when even a webserver was written inside Caché
- or various text editors, source manager packages, and ..., and ... and ...
JUST because it was possible.
Decades back you had your globals and your language and not even an OS below.
But this was in previous millenium. This time is definitely over.

 

Robert Cemper · Dec 10, 2020 go to post

I missed this during a migration from Caché to IRIS.
There were roughly 1500 routines and ~2000 classes. grown over >15 years.
The point was to find out dependencies and estimate the impact of changes.
 

Robert Cemper · Dec 10, 2020 go to post

A cross-reference for external Classmethods and/or routines within:

  • a routine
  • a class
  • a package of classes
  • a package of routines

this

Robert Cemper · Dec 8, 2020 go to post

The key issue I see is: Is there a Related XML schema available.
If YES:
- you can generate a package with the existing tools
- import the file with %XML.Reader
- do an %JSON... export
The XML schema is necessary because straight XML is just TEXT with no datatypes
while JSON has data types. For XML the type of data is documented in XML Schema.

If NO:
You may call any of the public available XML to JSON converters.
They may guess rather easy for numerics vs. strings in most cases.
But detecting Boolean (true /false ) vs. Integer is somewhat mysterious to me.
My personal opinion: re-inventing this wheel is not worth the effort.
Writing an adapter makes sense