It is currently Thu Dec 02, 2021 2:41 pm


All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Some questions on MUMPS V1
PostPosted: Thu Nov 01, 2012 3:00 pm 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
I have been asked the following by Peter Otis.

Have few questions regarding some enhancement to MV1:

1. Long Variable / Tag / Routine / Global names:

In a earlier discussion you mention that to implement it would be a complete rewrite. If we would find a skilled C programmer would you provide hints to help him to do the work?

2. Multiple database file mounted
Are they any implication that would make it difficult to implement it?

3. Did you try to compile your MV1 on Android? Any intention to to it?

---------------------------------------------------------------------

1. Problems with changing the size of Variable / Tag / Routine / Global names

The size is currently NOT a counted size, it is fixed at 8 and zero filled.

These are described as a var_u as:
typedef union __attribute__ ((__packed__)) VAR_U // get at this two ways
{ chr_q var_qu; // variable name (quadword)
u_char var_cu[8]; // variable name (as char[])
} var_u; // variable name union

They are accessed both as a quad word and as a character string.

The size is hardcoded as 8 in many places (loops, bcopy etc).

Other structures which include a name, put the name first and rely on a fixed size.

Tables of names rely on fixed size to index directly.

Because of these problems, I feel that increasing the size is basically a
re-write of at least half the system. Although I would provide assistance,
I would also keep the current version alive as I believe the bugs introduced
would be legion. Besides, I see no purpose to longer names.

2. Multiple database files mounted

This should be just a matter of adding the code to mount files as the run time
code is all there. Again, I haven't done it as I don't have a use for it.
I would prefer to add DDP but network and security programming can get a bit
slippery.

3. Did you try to compile your MV1 on Android?

I haven't tried as I don't have an Android device. I will try eventually.
It should work as it works fine on the Raspberry Pi which is linux on ARM as
Android is. Again, why would one want MUMPS on a phone/tablet; I always thought of it as a server language. (Yes, the Pi is a *small* server).


Ray Newman


Top
Offline Profile  
 
 Post subject: Re: Some questions on MUMPS V1
PostPosted: Fri Oct 29, 2021 9:55 am 
Site Admin
User avatar

Joined: Mon Nov 01, 2010 1:39 pm
Posts: 15
Real Name: DL Wicksell
Began Programming in MUMPS: 15 Mar 2008
In the summer of 2020, I took over maintenance and development of MUMPS V1 from Ray Newman. I changed its name to Reference Standard M (RSM), and went to work.

Regarding these questions to Ray, I will address where things are with them with respect to RSM.

1. Long Variable / Tag / Routine / Global names?

RSM fully supports 32 character names across every name type, which includes global variables, local variables, routine names, routine tag/label names, UCI names, and volume names. This support has been in RSM since December 26, 2020.

Neither I, nor anyone else who has been using RSM, have found any issues with longer names in RSM. It is possible to compile RSM to use the original 8 character names, by passing `dbver=1` to the `make` command when building RSM.

Code:
make dbver=1


2. Multiple database files mounted?

I have taken steps to prepare RSM to support multiple volumes per volume set, but it hasn't been completed yet. It is on my TODO list, and will hopefully be fully implemented soon.

3. Did you try to compile your MV1 on Android? Any intention to do it?

I have not attempted to compile RSM on Android, but I will put that on my TODO list as well. RSM runs on nearly all modern platforms, with the exception of native Windows (though it does run on Cgywin and WSL). It also runs on 32-bit and 64-bit hardware, as well as little-endian and big-endian hardware. It runs on older platforms too, going back to around 1999/2000, with the exception of SPARC machines (that will not be fixed). There are obviously platforms that I have not tested on, but RSM is quite portable.

RSM can be found at https://gitlab.com/Reference-Standard-M/rsm.

Happy coding!

_________________
"If a thing is worth doing, it is worth doing badly." ~GK Chesterton

DL Wicksell
President / CEO
Fourth Watch Software, LC


Top
Offline Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Theme created StylerBB.net