Page 1 of 2

BASIC, print at line, column?

Posted: Tue Jan 17, 2023 10:36 am
by fim
Is there a way in Basic to place print on screen at a specific row and column?
I can't find it in the Basic manual.
/Fim W.

Re: BASIC, print at line, column?

Posted: Tue Jan 17, 2023 11:01 am
by tim.stegner
appears you have two options.
1) use terminal escape codes to position the cursor to write at l,c. Terminal escape codes can easily be found using the VT100 search term.
2) use SMG$ run-time-library subroutines to establish a virtual screen, write to it, then display on your terminal. Recommend looking these up in the VMS Run-Time Library manual available on the VMSsoftware website.

Re: BASIC, print at line, column?

Posted: Tue Jan 17, 2023 11:42 am
by fim
Didn't think about the SMG routines.
I have used them before for "input".
Now I will use them for "output"
Thanks for the help.

/Fim W.

Re: BASIC, print at line, column?

Posted: Tue Jan 17, 2023 5:58 pm
by martin
They're called "smug" for a good reason. They were an excellent way of showing off on VT220s before graphics terminals came in. :-)

Re: BASIC, print at line, column?

Posted: Tue Jan 17, 2023 7:30 pm
by arne_v
1) direct escape code
2) SMG$
3) curses (C API but can be called from other languages)
4) find a third party library

I was very impressed by SMG$ in the late 80's. Not so much after that.

And curses besides the language issue is even worse.

So direct escape code or a third party library.

Added in 18 minutes 13 seconds:
Example direct escape code:

Code: Select all

program box1

declare integer i

external sub clrscr
external sub print_abs(integer, integer, string)

call clrscr
call print_abs(10, 20, "This is a test")
call print_abs(23, 1, "")

end program
!
sub clrscr

print chr$(155) + "2J"

end sub
!
sub print_abs(integer row, integer col, string txt)

print chr$(155) + str$(row) + ";" + str$(col) + "H" + txt

end sub
Added in 20 minutes 25 seconds:
Example using my old scr.mar code:

Code: Select all

program box2

external sub scr_clr
external sub scr_put_txt(integer, integer, string, integer)
external sub scr_exit

call scr_clr
call scr_put_txt(10, 20, "This is a test", 0)
call scr_put_txt(23, 1, "", 0)
call scr_exit

end program
Just say if you want a copy.

It got some goodies:

; SCR_APP ( )
; SCR_ASCIIFONT ( )
; SCR_BEL ( )
; SCR_BOX ( ROW , COL , HEIGTH , WIDTH )
; SCR_CLR ( )
; SCR_CUR_OFF ( )
; SCR_CUR_ON ( )
; SCR_DEL_LIN ( ROW )
; SCR_DEVTYP ( TYP )
; SCR_FLU_TXT ( ROW , COL , TXT_STR , ATTR )
; SCR_GET_KEY ( ROW , COL , KEY )
; SCR_GET_LIN ( LIN_STR , ACTLEN , PMT_STR )
; SCR_GET_MSG ( MSG , MSGLEN , OK )
; SCR_GET_PW ( LIN_STR , ACTLEN , PMT_STR )
; SCR_GET_TXT ( ROW , COL , LIN_STR , ACTLEN , PMT_STR )
; SCR_HIT ( )
; SCR_HOR_LIN ( ROW , COL , LENGTH )
; SCR_NOTRAP ( )
; SCR_PUT_BIGTXT ( ROW , COL , TXT_STR , ATTR )
; SCR_PUT_LIN ( LIN_STR )
; SCR_PUT_TXT ( ROW , COL , TXT_STR , ATTR )
; SCR_RETRAP ( HANDL )
; SCR_SCROLL ( NLIN )
; SCR_SETSCROLL ( FIRST , LAST )
; SCR_SOFTFONT1 ( )
; SCR_SOFTFONT2 ( )
; SCR_TRAP ( HANDL )
; SCR_VER_LIN ( ROW , COL , LENGTH )
; SCR_WHERE ( ROW , COL )
; SCR_WID_132 ( )
; SCR_WID_80 ( )

Added in 5 minutes 47 seconds:
BTW, I am curious why you picked Basic.

It is a pretty good Basic and people who used Basic on PDP-11 or VAX know it, but it is very different from various MS Basic (GW Basic, QBasic, VB6/VBA/VBS, VB.NET etc.).

Fortran, Pascal and C is more "like on other platforms" (even though Pascal was missing on the student system last I checked - which is a shame)

Re: BASIC, print at line, column?

Posted: Wed Jan 18, 2023 3:56 am
by fim
COBOL is my native language (2 million lines) and Basic (0.5 million lines) is my second language.
Normally I worked with a smaller ERP system in PoweBasic in Windows.
PowerBasic has "everything" and therefore I thought I'd take a look at Basic in OpenVms. But a little further study, I see that it is probably not what I had in mind. So it will probably be COBOL instead.
Pascal is now included in the student system.
But thanks anyway for the advice.

Re: BASIC, print at line, column?

Posted: Wed Jan 18, 2023 8:19 am
by tim.stegner
COBOL, last i looked, does have intrinsic cursor positioning syntax.

Re: BASIC, print at line, column?

Posted: Wed Jan 18, 2023 8:44 am
by arne_v
fim wrote:
Wed Jan 18, 2023 3:56 am
COBOL is my native language (2 million lines) and Basic (0.5 million lines) is my second language.
Normally I worked with a smaller ERP system in PoweBasic in Windows.
PowerBasic has "everything" and therefore I thought I'd take a look at Basic in OpenVms. But a little further study, I see that it is probably not what I had in mind. So it will probably be COBOL instead.
Pascal is now included in the student system.
But thanks anyway for the advice.

I have never used PowerBasic but I believe it is providing functionality like VB6 and Delphi. In which case VMS Basic is not what you want.

You could go for Cobol. VMS Cobol is a nice Cobol compiler and I believe pretty standard (pre-2002 standards that is!). If you know Cobol well then I don't think you will have any problems working with VMS Cobol. UI wise it would be text based though.

If you want graphical then you could go for a web server and PHP maybe interfacing with CGI scripts in Cobol.

I suspect that the student system has too little memory for X to be any fun. But you could do X code in C or install Java and do Swing code (which do work with X on VMS).

Re: BASIC, print at line, column?

Posted: Wed Jan 18, 2023 9:45 am
by fim
I know COBOL in OpenVms well. Many years ago I wrote a small ERP system (280,000 lines).
Now I start all over again with COBOL.

One thing I can't find in the manual is to write a comment at the end of the line.
In AcuCobol you can write like this.
20 IDENT-CRT-COM OCCURS 24 PIC X(40). | Bör förlängas

Is there something similar to COBOL in OpenVms?
/Fim W.

Re: BASIC, print at line, column?

Posted: Wed Jan 18, 2023 10:02 am
by arne_v
Not that I am aware of (but then I am not really a Cobol person) - only * at the beginning.

Added in 5 minutes 37 seconds:
Regarding Cobol on VMS and data storage.

VMS and VMS Cobol got excellent support for indexed files. Standard Cobol syntax.

For access to relational databases via embedded SQL you have support for:
- Rdb on VMS
- Mimer on VMS
- SQLRelay running on Linux or Windows connecting to practically any database on any OS (last I checked there were some problems with parameters for anything but Oracle, but maybe that has been resolved since then)