Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - keith.mcbride

Language / Re: Error 11
August 07, 2023, 01:48:49 PM
Is it possible the file is corrupted. I believe we had same situation a few years ago and rebuilding the file seemed to fix it
Language / Re: Detecting a CALL
January 12, 2023, 10:13:51 AM
I've always used TCB(13) - Current Program Level
If 1 then the program is being RUN
If > 0 then you are in a CALL, PERFORM, or object function
It seems to work if you pre-dim the array size:

0100 DIM y$[15]
0200 READ DATA FROM "a,b,c",SEP="," TO y${ALL}
0300 PRINT y$[0],'LF',y$[1],'LF',y$[2]
Wish List / Re: Sort Array
June 22, 2022, 05:51:23 PM
You can use the associative arrays (hash arrays) that are available:

100 dim a
200 a["03"]=3
300 a["01"]=1
400 a["02"]=2
500 for i$ index a{all}
600 print a[i$]
700 next i$

running gives

I think of the hash arrays as just a simplified memory file. Although they are implemented differently than a memory file.
In Linux if you add an & to the end of  the command line it will run in the background and returning control immediately.
You can INVOKE your existing command, adding a  " &" on the end and it should return control right away.
That should allow you to start all the processes asynchronously
I have used them off and on in the past (1990s), but normally for documenting what as done vs during design. Visio at on point had some tools to pull in the schema from SQL Server and to assist in the design which made it much easier.

My issue was once you got over 10 or 15 tables it was too big and unwieldy to be useful unless you printed it out in multiple sheets and taped them on the wall.  Then it would be out of date the next day.
If you kept it up to date it could be useful in an environment with many programmers and useful as a way to document the tables you have. It just has to be someone's job to  keep it up.

A good homework assignment, should anyone decide to accept it,  would be a tool to read the PVX dictionary and have a side file to hold the relationships between tables. Then you could create an ERD from that. The auto layout is the hard part.

Programming / Re: Generic Input
January 20, 2020, 02:31:28 PM
Since you are setting mode$ to the HTA() of eom your check in the until should be

UNTIL mode$="0D"

instead of comparing to $0D$
Thin Client/WindX / Re: Clear screen from bash
October 07, 2019, 09:23:15 AM
In a terminal window, the command "clear" will clears the screen. You can see if it will do the same in Windx
Ken, Interesting question.  I wrote the following program:

0100 BEGIN
0110 OPEN (1)"*MEMORY*"
0120 OPEN (2)"/tmp/test"
0200 FOR i=1 TO 10
0205 WRITE (1,KEY=STR(i:"00"))i
0210 NEXT i
0215 c=10
0300 SELECT i FROM 1 BEGIN "" END STR(c:"00")
0305 PRINT (2)"I=",i," C=",c
0310 c-=1

If the END is only evaluated once at the beginning then I expect it to read all 10 records, ignoring the new value of C
If the END is evaluated each iteration, then I would expect the program to stop reading somewhere around record 6 or 5.

The results:
I= 1 C= 10
I= 2 C= 9
I= 3 C= 8
I= 4 C= 7
I= 5 C= 6
I= 6 C= 5
I= 7 C= 4
I= 8 C= 3
I= 9 C= 2
I= 10 C= 1

It would appear that the end is only evaluated once at the beginning of the SELECT

Our hosts are older Dell Poweredge 610 with 8 CPUs at 2.6 G and around 100 GB memory. We assign upto 8 CPUs and 22 GB memory to the VM running the software. Centos 7 is very efficient and works well with VMware, we are almost never pushing the hardware.

We update Centos but not frequently, our maintenance window is late Saturday afternoon to early Sunday morning, otherwise we have production going on.

We were concerned about Tintri, but they have been purchased by a company called DDN and received a healthy cash infusion.

We use a company called Veristor (which is headquartered here in Atlanta) who provide a one stop solution. They are VMware partners, and hardware agnostic when it comes to storage and networking. We bought both our former Dell Equalogix and current Tintri solutions from them and they also mapped out and setup the networking for the hosts and storage arrays. Veristor was  the low price bidder on our initial purchase of hardware.

Veristor provides a one call support service we use. If there is a problem we call Veristor and they troubleshoot or call in the right support people to get it fixed. I have called them at 2 in the morning to fix an issue and it is nice not having to call two or three vendors who all say the problem is somewhere else.

For disaster recovery with replicate data in real-time from our VMs to Veristor's data center. In a disaster we boot up the VMs at their data center and point our network to them.

Let me know if you have any other questions.

Keith McBride
We are running Centos 7 (Redhat open source linux version) on VMware  with 375 users (just updated to 425 users) with no performance issues. The system seems very snappy and we have no complaints from users.
The key is disk I/O, we use  networked attached storage, originally Dell Equalogix, now Tintri with 10 gig ethernet connections.
We have used VMware Live Motion to move the system from one host to another to balance out loads or do maintenance with no issues. There is only a 1 or 2 second lag while it is moving.
We use Veem for backups. It starts a snapshot of the running system, does the backup from that.

We have been using virtualized servers for 10 years and have been pleased with the  results.

Keith McBride
Halperns Steak & Seafood
Language / Memory file with alternate keys doesn't work
October 30, 2018, 01:06:57 PM
We upgraded over the weekend from Version 7.1 on SUSE to PVX 2017 (version 14) on Centos 7.
We have several programs using memory files to sort data.
Example: OPEN (cust_list)"*MEMORY*;KEYDEF=10,[""RANK"":2:1:14:""B.2D""]"

On these we write records to the memory file
FIN(cust_list,"NUMREC") would show the expected number of records (23,000) record is just 10 character customer Number + total amount
The file is at the end, a re positioning read (like READ (cust_list,kno="RANK",key="") ) does not re position the file
and using KEF, KEL or other type functions creates a segmentation fault. pvxtrace.log entry below

Any Ideas

Keith McBride
Halperns Steak and Seafood

Oct 30 12:26 [<sigterm>:0] Segmentation fault
Oct 30 12:26 [<sigterm>:0]  - ERR=11 CTL=0 RET=258 LFA=32762 LFO=32762
Oct 30 12:26 [<sigterm>:0]  - Last path used: *MEMORY*;KEYDEF=10,["RANK":2:1:14:"B.2D"]
Oct 30 12:26 [<sigterm>:0] --- Program stack ---
Oct 30 12:26 [<sigterm>:0]  - STK(0) = line 15100 in /home/prod/prog/COMRCA
Oct 30 12:26 [<sigterm>:0]    - GO SUB... 15075
Oct 30 12:26 [<sigterm>:0]    - FOR...... 15020
Oct 30 12:26 [<sigterm>:0]    - GO SUB... 01000
Oct 30 12:26 [<sigterm>:0] --- Files ---
Oct 30 12:26 [<sigterm>:0]  - PTH(0) = /dev/pts/147
Oct 30 12:26 [<sigterm>:0]  - PTH(1) = /home/prod/sysprog/ZZP
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:'WR      '
Oct 30 12:26 [<sigterm>:0]  - PTH(2) = /home/prod/data/OPF002
Oct 30 12:26 [<sigterm>:0]  - PTH(3) = /home/prod/data/OPG002
Oct 30 12:26 [<sigterm>:0]  - PTH(4) = /home/prod/data/AR3002
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:<Start of file>
Oct 30 12:26 [<sigterm>:0]  - PTH(5) = /home/prod/data/AR6002
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:<Start of file>
Oct 30 12:26 [<sigterm>:0]  - PTH(6) = /home/prod/data/PE1002
Oct 30 12:26 [<sigterm>:0]  - PTH(7) = /home/prod/data/OPF002
Oct 30 12:26 [<sigterm>:0]  - PTH(8) = /home/prod/data/AR1002
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:<Start of file>
Oct 30 12:26 [<sigterm>:0]  - PTH(13) = /home/prod/data/ZZPARM
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:'osecKAM'
Oct 30 12:26 [<sigterm>:0]  - PTH(14) = /dev/pts/147
Oct 30 12:26 [<sigterm>:0]  - PTH(32762) = *MEMORY*;KEYDEF=10,["RANK":2:1:14:"B.2D"]
Oct 30 12:26 [<sigterm>:0]  - PTH(32763) = *MEMORY*
Oct 30 12:26 [<sigterm>:0]  - PTH(32764) = *MEMORY*
Oct 30 12:26 [<sigterm>:0]  - PTH(32765) = *MEMORY*
Oct 30 12:26 [<sigterm>:0]  - PTH(32766) = *Pdf*
Oct 30 12:26 [<sigterm>:0]  - PTH(32767) = *MEMORY*;KEYDEF=10,["SALES":1:79:11:"D"]
Oct 30 12:26 [<sigterm>:0]  - PTH(64999) = *memory*;keydef=[1:1:30:C]+[2:1:30:C]+[3:1:30:C]
Oct 30 12:26 [<sigterm>:0]  - PTH(65000) = /home/prod/sysdata/FID
Oct 30 12:26 [<sigterm>:0]  - PTH(65002) = /home/prod/data/PFX002
Oct 30 12:26 [<sigterm>:0]  - PTH(65003) = /home/prod/syslib/_msglib.en
Oct 30 12:26 [<sigterm>:0]     - Keyed file.  KEY:<Start of file>
Oct 30 12:26 [<sigterm>:0] --- Err() Info ---
Oct 30 12:26 [<sigterm>:0]        Current Err:66 Prog: /home/prod/prog/COMRCS Stno: 1820 LFA: 99 LastPath: ZZT (pvxsub.c@1433)
Oct 30 12:26 [<sigterm>:0] --- Stack dump ---
Oct 30 12:26 [<sigterm>:0] /lib64/ [0x7fb949ce02f0]
Oct 30 12:26 [<sigterm>:0] /lib64/ [0x7fb949dffe41]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x410c03]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x410a6d]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x41056b]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x470e06]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x406a07]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x405665]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x403fee]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x403bbe]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x403a56]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x403841]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x4e4401]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x4e4339]
Oct 30 12:26 [<sigterm>:0] /lib64/ [0x7fb949ccc445]
Oct 30 12:26 [<sigterm>:0] /usr/lib/pvx/pxplus() [0x403641]