Re: VMS x86-64 database server

Liste des GroupesRevenir à co vms 
Sujet : Re: VMS x86-64 database server
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vms
Date : 10. Jul 2025, 01:04:34
Autres entêtes
Organisation : SunSITE.dk - Supporting Open source
Message-ID : <686f0392$0$686$14726298@news.sunsite.dk>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14
User-Agent : Mozilla Thunderbird
On 7/9/2025 3:22 AM, Lawrence D'Oliveiro wrote:
On Tue, 8 Jul 2025 20:31:37 -0400, Arne Vajhøj wrote:
On 7/8/2025 7:37 PM, Lawrence D'Oliveiro wrote:
On Tue, 8 Jul 2025 18:20:50 -0400, Arne Vajhøj wrote:
Standards evolve. They add lots of new stuff. And sometimes they
remove stuff that is not needed anymore.
>
But those standards in particular have not evolved.
>
SQL standard has evolved. Lot of stuff has been added.
 But nothing new in EXEC SQL. For example, did they offer any
equivalent to the following utility functions?
      def sql_string_list(the_list) :
         "returns a list containing the quoted items of the_list, suitable" \
         " for use in an “in” clause."
         return \
             "(" + ", ".join([sql_string(s) for s in the_list]) + ")"
     #end sql_string_list
      def escape_sql_wild(s, escch) :
         "escapes SQL pattern wildcards in s with escch. The same escch needs" \
         " to be passed to the ESCAPE clause for the LIKE operator."
         if not isinstance(s, str) :
             raise TypeError("expecting s to be a string")
         #end if
         if not isinstance(escch, str) or len(escch) != 1 :
             raise TypeError("expecting escch to be a single-character string")
         #end if
         result = []
         for ch in s :
             if ch == escch or ch == "%" or ch == "_" :
                 result.append(escch)
             #end if
             result.append(ch)
         #end for
         return "".join(result)
     #end escape_sql_wild
      def escape_sql_name(n, escch = "\"") :
         "converts n to escaped form to avoid potential conflicts with SQL keywords" \
         " and other syntax errors (e.g. from embedded spaces). escch should be “\"”" \
         " as per the SQL standard."
         assert len(escch) == 1
         out = []
         for i, split1 in enumerate(n.split(escch)) :
             if i != 0 :
                 out.append(escch * 2)
             #end if
             out.append(split1)
         #end for
         return escch + "".join(out) + escch
     #end escape_sql_name
IN is tricky due to the variable number of data.
But dynamic SQL with dynamic data is still bad.
I would write your code a little simpler:
$ type dyn.py
import sqlite3
def esc(s):
     return "''".join(s.split("'"))
def q(s):
     return f"'{s}'"
def dump_range(con, vals):
     jvals = ",".join(q(esc(val)) for val in vals)
     c = con.cursor()
     c.execute(f"SELECT f1,f2 FROM t1 WHERE f2 IN ({jvals})")
     for row in c.fetchall():
         print('%d %s' % (row[0], row[1]))
with sqlite3.connect('test.db') as con:
     dump_range(con, ['A', 'CCC', 'EEEEE'])
     dump_range(con, ['BB', 'DDDD'])
$ python dyn.py
1 A
3 CCC
5 EEEEE
2 BB
4 DDDD
But it is both simpler and safer to use dynamic SQL
with just dynamic non-data:
$ type sta.py
import sqlite3
def dump_range(con, vals):
     jparm = ",".join('?' for val in vals)
     c = con.cursor()
     c.execute(f"SELECT f1,f2 FROM t1 WHERE f2 IN ({jparm})", vals)
     for row in c.fetchall():
         print('%d %s' % (row[0], row[1]))
with sqlite3.connect('test.db') as con:
     dump_range(con, ['A', 'CCC', 'EEEEE'])
     dump_range(con, ['BB', 'DDDD'])
$ python sta.py
1 A
3 CCC
5 EEEEE
2 BB
4 DDDD
It is even more tricky in embedded SQL, but of course
it is possible.
You can do the same solution with dynamic SQL with just
dynamic non-data by using EXEC SQL with PREPARE and EXECUTE
(that requires you to use SQLDA).
Possible but requires some code.
Easier to use a LOCAL TEMPORARY TABLE and stay static.
Cobol Rdb example:
$ type emb.sco
identification division.
program-id. emb.
*
data division.
working-storage section.
EXEC SQL BEGIN DECLARE SECTION END-EXEC
EXEC SQL INCLUDE SQLCA END-EXEC.
01 con pic x(255).
01 f1 pic 9(9) display.
01 f2 pic x(50).
01 inclause.
03 nvals pic 9(9).
03 vals pic x(50) occurs 100 times.
01 i pic 9(9) comp.
EXEC SQL END DECLARE SECTION END-EXEC
EXEC SQL DECLARE curs CURSOR FOR SELECT f1,f2 FROM t1 WHERE f2 IN (SELECT f2 FROM f2list) END-EXEC.
procedure division.
main-paragraph.
     move "FILENAME disk4:[rdb]test" to con
     EXEC SQL CONNECT TO :con END-EXEC
     move 2 to nvals
     move "BB" to vals(1)
     move "CCC" to vals(2)
     perform dump-range-paragraph
     move 2 to nvals
     move "A" to vals(1)
     move "BB" to vals(2)
     perform dump-range-paragraph
     stop run.
dump-range-paragraph.
     perform varying i from 1 by 1 until i > nvals
         move vals(i) to f2
         EXEC SQL INSERT INTO f2list VALUES(:f2) END-EXEC
     end-perform
     EXEC SQL OPEN curs END-EXEC
     move 0 to SQLCODE
     perform until not SQLCODE = 0
         EXEC SQL FETCH curs INTO :f1, :f2 END-EXEC
         if SQLCODE = 0
             display f1 " " f2
         end-if
     end-perform
     EXEC SQL CLOSE curs END-EXEC
     EXEC SQL DELETE FROM f2list END-EXEC.
$ sqlpre /cob /sqloptions=connect emb
$ link emb + sys$library:sql$user73/libr
$ run emb
000000002 BB
000000003 CCC
000000001 A
000000002 BB
It could probably be done better by a real Cobol
programmer, but ...
Arne

Date Sujet#  Auteur
6 Jul20:45 * VMS x86-64 database server87Arne Vajhøj
6 Jul22:39 +- Re: VMS x86-64 database server1Lawrence D'Oliveiro
6 Jul23:07 +* Re: VMS x86-64 database server54Arne Vajhøj
7 Jul00:19 i+* Re: VMS x86-64 database server52Lawrence D'Oliveiro
7 Jul00:58 ii`* Re: VMS x86-64 database server51Arne Vajhøj
7 Jul03:42 ii `* Re: VMS x86-64 database server50Lawrence D'Oliveiro
7 Jul19:07 ii  `* Re: VMS x86-64 database server49Arne Vajhøj
7 Jul19:16 ii   +* Re: VMS x86-64 database server2Arne Vajhøj
7 Jul19:21 ii   i`- Re: VMS x86-64 database server1Arne Vajhøj
7 Jul23:07 ii   `* Re: VMS x86-64 database server46Lawrence D'Oliveiro
8 Jul00:28 ii    +* Re: VMS x86-64 database server24Arne Vajhøj
8 Jul01:26 ii    i`* Re: VMS x86-64 database server23Lawrence D'Oliveiro
8 Jul13:45 ii    i `* Re: VMS x86-64 database server22Arne Vajhøj
8 Jul22:57 ii    i  `* Re: VMS x86-64 database server21Lawrence D'Oliveiro
8 Jul23:40 ii    i   `* Re: VMS x86-64 database server20Arne Vajhøj
9 Jul00:38 ii    i    `* Re: VMS x86-64 database server19Lawrence D'Oliveiro
9 Jul02:54 ii    i     `* Re: VMS x86-64 database server18Arne Vajhøj
9 Jul08:25 ii    i      `* Re: VMS x86-64 database server17Lawrence D'Oliveiro
9 Jul20:33 ii    i       `* Re: VMS x86-64 database server16Arne Vajhøj
10 Jul00:07 ii    i        `* Re: VMS x86-64 database server15Lawrence D'Oliveiro
10 Jul00:51 ii    i         `* Re: VMS x86-64 database server14Arne Vajhøj
10 Jul02:21 ii    i          `* Re: VMS x86-64 database server13Lawrence D'Oliveiro
10 Jul03:24 ii    i           `* Re: VMS x86-64 database server12Arne Vajhøj
10 Jul05:28 ii    i            +* Re: VMS x86-64 database server9Lawrence D'Oliveiro
11 Jul00:05 ii    i            i`* Re: VMS x86-64 database server8Arne Vajhøj
11 Jul00:58 ii    i            i `* Re: VMS x86-64 database server7Lawrence D'Oliveiro
11 Jul01:11 ii    i            i  `* Re: VMS x86-64 database server6Arne Vajhøj
11 Jul01:19 ii    i            i   `* Re: VMS x86-64 database server5Lawrence D'Oliveiro
11 Jul01:23 ii    i            i    `* Re: VMS x86-64 database server4Arne Vajhøj
11 Jul01:29 ii    i            i     `* Re: VMS x86-64 database server3Lawrence D'Oliveiro
11 Jul01:38 ii    i            i      `* Re: VMS x86-64 database server2Arne Vajhøj
11 Jul03:54 ii    i            i       `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
11 Jul00:57 ii    i            `* Re: VMS x86-64 database server2Arne Vajhøj
11 Jul01:24 ii    i             `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
8 Jul14:35 ii    `* Re: VMS x86-64 database server21Arne Vajhøj
8 Jul22:56 ii     `* Re: VMS x86-64 database server20Lawrence D'Oliveiro
8 Jul23:20 ii      `* Re: VMS x86-64 database server19Arne Vajhøj
9 Jul00:37 ii       `* Re: VMS x86-64 database server18Lawrence D'Oliveiro
9 Jul01:31 ii        `* Re: VMS x86-64 database server17Arne Vajhøj
9 Jul08:22 ii         `* Re: VMS x86-64 database server16Lawrence D'Oliveiro
10 Jul01:04 ii          `* Re: VMS x86-64 database server15Arne Vajhøj
10 Jul01:25 ii           +* Re: VMS x86-64 database server12Arne Vajhøj
10 Jul02:35 ii           i`* Re: VMS x86-64 database server11Lawrence D'Oliveiro
10 Jul03:26 ii           i `* Re: VMS x86-64 database server10Arne Vajhøj
10 Jul06:48 ii           i  `* Re: VMS x86-64 database server9Lawrence D'Oliveiro
11 Jul00:14 ii           i   `* Re: VMS x86-64 database server8Arne Vajhøj
11 Jul00:54 ii           i    `* Re: VMS x86-64 database server7Lawrence D'Oliveiro
11 Jul01:29 ii           i     `* Re: VMS x86-64 database server6Arne Vajhøj
12 Jul00:35 ii           i      `* Re: VMS x86-64 database server5Lawrence D'Oliveiro
12 Jul00:43 ii           i       `* Re: VMS x86-64 database server4Arne Vajhøj
12 Jul01:35 ii           i        `* Re: VMS x86-64 database server3Lawrence D'Oliveiro
12 Jul01:48 ii           i         `* Re: VMS x86-64 database server2Arne Vajhøj
12 Jul03:01 ii           i          `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
10 Jul02:33 ii           `* Re: VMS x86-64 database server2Lawrence D'Oliveiro
11 Jul01:33 ii            `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
11 Jul00:50 i`- Re: VMS x86-64 database server1Arne Vajhøj
6 Jul23:11 +- Re: VMS x86-64 database server1Arne Vajhøj
6 Jul23:39 `* Re: VMS x86-64 database server30Craig A. Berry
7 Jul00:57  `* Re: VMS x86-64 database server29Arne Vajhøj
7 Jul15:50   `* Re: VMS x86-64 database server28Mark Berryman
7 Jul19:01    `* Re: VMS x86-64 database server27Arne Vajhøj
7 Jul22:06     `* Re: VMS x86-64 database server26Mark Berryman
7 Jul22:36      +* Re: VMS x86-64 database server2Arne Vajhøj
7 Jul22:37      i`- Re: VMS x86-64 database server1Arne Vajhøj
7 Jul23:08      `* Re: VMS x86-64 database server23Lawrence D'Oliveiro
8 Jul00:21       `* Re: VMS x86-64 database server22Arne Vajhøj
8 Jul01:27        `* Re: VMS x86-64 database server21Lawrence D'Oliveiro
8 Jul12:14         `* Re: VMS x86-64 database server20Arne Vajhøj
8 Jul22:58          `* Re: VMS x86-64 database server19Lawrence D'Oliveiro
8 Jul23:14           +* Re: VMS x86-64 database server14Arne Vajhøj
9 Jul00:40           i`* Re: VMS x86-64 database server13Lawrence D'Oliveiro
9 Jul03:18           i `* Re: VMS x86-64 database server12Arne Vajhøj
9 Jul08:27           i  +- Re: VMS x86-64 database server1Lawrence D'Oliveiro
9 Jul11:16           i  `* Re: VMS x86-64 database server10hb0815
9 Jul15:13           i   `* Re: VMS x86-64 database server9Arne Vajhøj
9 Jul17:51           i    `* Re: VMS x86-64 database server8hb0815
9 Jul18:39           i     `* Re: VMS x86-64 database server7Arne Vajhøj
9 Jul18:56           i      +- Re: VMS x86-64 database server1Chris Townley
9 Jul20:55           i      `* Re: VMS x86-64 database server5hb0815
10 Jul20:50           i       `* Re: VMS x86-64 database server4Arne Vajhøj
10 Jul20:52           i        `* Re: VMS x86-64 database server3Arne Vajhøj
11 Jul12:09           i         `* Re: VMS x86-64 database server2hb0815
11 Jul15:16           i          `- Re: VMS x86-64 database server1Arne Vajhøj
10 Jul01:12           `* Re: VMS x86-64 database server4bill
10 Jul13:00            `* Re: VMS x86-64 database server3Dan Cross
11 Jul00:23             +- Re: VMS x86-64 database server1Arne Vajhøj
11 Jul23:13             `- Re: VMS x86-64 database server1Stephen Hoffman

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal