[Info-vax] Screen management in C

Arne Vajhøj arne at vajhoej.dk
Fri Dec 27 14:34:12 EST 2024


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



More information about the Info-vax mailing list