Sujet : Re: Screen management in C
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vmsDate : 27. Dec 2024, 20:34:12
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vkmvfk$3p9tn$1@dont-email.me>
References : 1 2 3
User-Agent : Mozilla Thunderbird
On 12/27/2024 11:12 AM, Craig A. Berry wrote:
On 12/27/24 9:17 AM, Arne Vajhøj wrote:
On 12/27/2024 9:24 AM, David Meyer wrote:
If I want to do screen management in a C program on OpenVMS, is it
better to use one of the curses packages in the C run-time library, or
the SMG$ run-time library? If the latter, is there any documentation on
how to call SMG$ routines from C?
>
If you do not have any existing code using curses or personal
experience with curses, then I would suggest SMG$.
>
There is an entire manual about SMG$:
>
https://docs.vmssoftware.com/vsi-openvms-rtl-screen-management-smg- manual/
>
There is a C header file with prototypes:
>
#include <smg$routines.h>
>
Because SMG$ are supporting Pascal/Basic/Cobol/Fortran then
many arguments are pass by descriptor and you will need to setup
those in C, so some familiarity with descriptors will be required.
This has been discussed previously here:
https://groups.google.com/g/comp.os.vms/c/ufBEqvGdglU
That discussion has pointers to various examples,
In general VMS Pascal/VMS Basic code should be maybe 25% shorter
than equivalent C code. But with a descriptor centric API like
SMG$ then it may be more like 40% shorter.
One could make a nice wrapper in C++ encapsulating the context
and convert between stl::string / C char array and descriptors.
But then a full screen VT UI is a concept that has been obsolete
for 30 years, so maybe there is little point.
Arne