Marc's Place

E$XIB - XIBOL naar E$XIB/E$LIB




Migratie handleiding van Multihouse XIBOL naar E$XIB / E$LIB


Algemeen

Meerdere administraties
De subroutines van E$XIB ondersteunen het gebruik meerdere adminstraties. In het administratiebestand zijn dan meerdere records aanwezig, voor elke administratie één record. Het is echter zo dat er twee administratierecords zijn, één in E$LIB (e$adm) en één in E$XIB (mhadm). Deze records dienen tijdens het draaien van een programma dezelfde waarde te bevatten. Hier wordt voor gezorgd in de routines xclse, xfnam, xopen, xism1, xism2, xism3, xrel1, xrel2 en xrel3. Ben je zelf op andere manieren bezig met mhadm (het XIBOL/E$XIB administratierecord in mhalg.h) zorg er dan voor dat ook e$adm op tijd wordt gevuld.
 
Initieel, dus ná de aanroep van dxkop, zijn beide records correct gevuld.
Functietoetsen
De subroutines van E$XIB ondersteunen het gebruik van functietoetsen.
 
De volgende toetsaanslagen zoals die bij de Multihouse XIBOL inname routines aanwezig zijn, zijn niet in E$XIB geïmplementeerd:
  • PF1-R
  • PF1-G
  • PF1-U
  • PF1-W
Inname-routines
De cursortoetsen fungeren als cursortoetsen en hebben verder geen speciale functionaliteit.
 
Tevens is er geen onderscheid tussen het intoetsen van een spatie + <RET> of gelijk <RET> op een leeg alfanumeriek veld, zoals bij de Multihouse XIBOL's. In beide gevallen, ook bij axstr, wordt mhlen = 0 teruggegeven.
 
Hetzelfde geldt voor de ingave van een 0 (nul) bij bijvoorbeeld axdec. Als de waarde 0 is, is mhlen ook 0.
Akkoordvraag-routines
Er is geen prefix-letter meer aanwezig. Dus N1, N2, etc. of S1, S2, etc. bestaat niet meer. Het is gewoon 1, 2, etc..
SMG
E$XIB maakt geen gebruik van SMG, het Dec/VMS specifieke terminal-windowing systeeem. E$XIB is multi-platform doordat het in Synergy/DBL is geprogrammeerd en deze kent eigen terminal-window routines. Vandaar dat de overname van een scherm door een ander programma niet mogelijk is. Dus xcall xopnt (1) heeft weinig effect.
 
Een nadeel van het multi-platform werken is dat er geen detectie meer bestaat van de door de gebruiker ingestelde schermgrootte. Een programma start standaard altijd op met 80 kolommen en 24 regels. Om hier wat aan te doen bestaat de logical e$pagesize. Deze bevindt zich in e$sys:assigns.com onder VMS en in synergy.ini onder Microsoft Windows. Deze logical bepaalt de hoogte in regels van het scherm van de gebruiker en staat initieel op 24. De breedte blijft 80 bij het starten van een programma. Dat betekent dat je, als niet met domme terminals werkt, NIET meer gebonden bent aan 80 x 24 regels. Je kan je scherm nu op 35 x 80 of 35 x 132 zetten en gewoon DXSTRingen op regel 30, of zo.
Gebruikers
Er moet minimaal één gebruiker aangemaakt worden. Zo niet, dan wordt bij een eerste programmastart de gebruiker DEFAULT aangemaakt. De instellingen per gebruiker bevinden zich in E$SYS:TERMINAL.ISM en E$SYS:USRS.ISM. Daarmee zijn de volgende zaken van de Multihouse XIBOL's niet meer van toepassing:
  • MHM_STATUS09.
  • De FLAGS uit het administratiebestand.
  • De attributen voor dxerr.
  • MH$TNMBR en SETTNMBR
Scherm-updates
Het stack-achtige werken van xbsup / xesup is deels vervallen. De scherm-update blijft uit totdat de laatste overeenkomende xesup is uitgevoerd óf als de eerstvolgende inname van het scherm plaatsvindt. Daarmee behoort het probleem van onzichtbare inname's wegens teveel xbsup's of te weinig xesup's tot het verleden.
 
Maak je voor de inname gebruik van E$XIB routines, dan wordt de hele xbsup / xesup stack automatisch op nul gezet.
LPQUE statement
Het lpque statement brengt wat moeilijkheden met zich mee als je van DIBOL afstapt of naar een ander systeem dan VMS overgaat. Vervang al je lpque statements door xcall xqueu of door xcall e$pclose statements. Deze routines ondersteunen namelijk ook op andere systemen de logicals DBL$LPxx en zelfs meer dan de standaard 9 stuks van DIBOL:
Oud:
lpque (file, lpnum:8, copies:2, delete) ; DBL$LP8
Nieuw:
xcall e$pclose (file, 8, 2, 1)
Een andere mogelijkheid is om met GETLOG de printer uit de logical op te halen en die aan LPQUE mee te geven:
 
xcall getlog ("DBL$LP8", printer, len)
lpque (file, lpnum:printer, copies:2, delete)
Common veld MHCAD
Niet alle opties van mhcad worden ondersteund of ze worden op een andere manier toegepast. Zie dxkop.
Compileren en linken
Pas je procedures aan zodat ze niet meer XIBOL meelinken maar E$XIBOLB en E$LIBOLB. Dit zijn logicals die naar de juiste object-bibliotheken wijzen.
VMS:
LINK <programma.obj>, E$XIBOLB/LIB, E$LIBOLB/LIB, .../OPT
 
Microsoft Windows:
dblink <programma> e$xiblib:x$object.olb e$liblib:e$object.olb

Routines Omschrijving

axbgn, axbgt Deze subroutines bestaan niet in E$XIB. Hun vervanger is axbge.
 
axjnd
axxjn

dxvrg
dxvrd

dxxjn
pxxjn
Deze routines kunnen voor het 'Ja' antwoord niet alleen met een 'J' of een '1' maar ook met 'Y', 'O' en 'S' omgaan.
 
idat4 Deze subroutine bestaat niet in E$XIB. Zijn vervanger is idat2 die ook met 8-lange datums overweg kan.
 
idat7 Deze subroutine bestaat niet in E$XIB. Zijn vervanger is idat6 die ook met 8-lange datums overweg kan.
 
xbat1
xbat2
Deze subroutines bestaan niet in E$XIB. Het in de batch plaatsen onder Dec/VMS kan in Synergy/DBL eenvoudig gerealiseerd worden door een 'xcall shell' statement met een 'submit' opdracht.
 
xism1
xism2
xism3
Deze zijn alle drie gelijk. De maximale buffergrootte is 8192 bytes.
 
xotcf Doorgeefluiken etc. zijn er niet meer.
 
xprop
xqueu
De Printer Definition File van E$LIB heeft een langer record dan het Printer Parameter Bestand van Multihouse. Deze extra ruimte is bestemd voor de bestandsnamen van de pre- en post spool-bestanden. Je kan twee dingen doen:
  • Converteer je bestaande PPB naar de nieuwe recordlengte, of
  • Behoud de oude lengte door de logical E$MHPPB op 1 te zetten. E$LIB routines lezen dan met een fixed lengte van 70 posities.

Tevens bestaan de afdrukmethoden 98 en 99 niet meer. Deze dienen als afdrukmethode in het PDF opgenomen te worden met als device 'TT:'. Onderscheid tussen 80 en 132 breed is er dan niet; er wordt altijd 132 breed naar het scherm geprint.

 
xrel1
xrel2
xrel3
Deze zijn alle drie gelijk. De maximale buffergrootte is 8192 bytes.
 
xxsrt De DIBOL routine XCALL SORT en het gebruik van sorteerprogramma's werkt onder Synergy Language (DBL) niet meer. Synergy Language biedt een SORT statement in plaats van een XCALL zoals onder DIBOL.

De aanpassingen die gedaan moet worden om de nieuwe XXSRT te kunnen gebruiken bestaat uit het volgende:

  • De laatste parameter die voorheen de naam bevatte van het sorteerprogramma bestaat nog steeds, echter is de inhoud vervangen door een record. Er wordt dus géén gebruik meer gemaakt van aparte sorteerprogramma's.
  • Het programma waar naar doorgestart werd, gedefinieerd in de Vax/DIBOL SORT-parameterfile door het EXECUTE: statement, moet nu in parameter 5 worden doorgegeven. Zo niet, dan keert de routine terug naar het aanroepende programma en kan je zelf een STOP "PROG" programmeren.

Het record dat nu in de laatste parameter wordt meegegeven kan je vullen door DBLSORTG een include file te laten genereren (vóórdat je DIBOL van de VAX verwijderd!):
 

Vax/DBLSORTG input file:

INPUT:WRK:SORTFILE.DDF
WORK:3
OUTPUT:WRK:SORTFILE.DDF

RECORD:
       ARTIKEL,A18
       ,       A70
       INKDAT, D8
       ,       A104

KEYS:INKDAT,ARTIKEL
TAGS:SORT
EXECUTE:EXE:PRINTPROG.EXE

END:

 

Vax/DCL command procedure:

$ run sys$system:dblsortg
VAX DBLSORTG Version Vx.x

Input file: SORTPGM.PRM
Output file: SORTPGM.H

 

Resultaat van DBLSORTG:

RECORD SORTM

, A50,'1WRK:SORTFILE.DDF                                 '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                    WRK:SORTFILE.D'
, A50,'DF                                                '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                         002000x00'
, A50,'00000000000000000000000000000000000000000000000000'
, A50,'0000000000000000002DA      AA      000890000100000'
, A50,'0000000000000000000000000008018000000000000000000S'
, A50,'ORT 000000099y30                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                           EXE:PRINTPROG.EXE      '
, A50,'                                                  '
, A50,'                                                  '
, A50,'                                                00'
, A50,'                                        0010000000'
, A08,'00000000'

.INCLUDE 'SYS$LIBRARY:DBLSORTM.DBL'

 
Haal het .INCLUDE 'SYS$LIBRARY:DBLSORTM.DBL' statement weg en bewaar het bestand als een include. Toets bovenin in de source van je programma .INCLUDE 'SORTPGM.H' of zoiets. Dit record SORTM komt qua posities en lengte precies overeen met het RECORD PARMS dat voor het samenstellen van het sort-statement wordt gebruikt. Geef het record SORTM als laatste parameter mee aan XXSRT, in plaats van het sorteerprogramma. Hier volgt het record PARMS:
 

RECORD PARMS
                        ; INPUT=filespec(s)
        INNUM,  D1      ; Number of inputfiles
        INPUT,  7A255   ; Specifications for input file(s)

                        ; OUTPUT=filespec
        OUTPUT, A255    ; Specifications for output file

        RECLEN, D5      ; Record length

        ISAM,   D1      ; Non-VMS or DBL-ISAM: always 0.

        PAD,    A1, "_" ; User-defined end-of-file marker
                        ; ASCII 000
                        ; Non-VMS or DBL-ISAM: not used

        COUNT,  7D10    ; Number of records to sort
                        ; Non-VMS or DBL-ISAM: not used

        KEYNUM, D1      ; Number of keys
        TYPE,   8A1     ; Key field data type
                        ; (A=alpha,D=numeric,...)
        DIRECT, 8A1     ; Sort direction
                        ; (A=ascending,D=descending)
        POSTN,  8D5     ; Starting record position for key
        LENGTH, 8D3     ; Length of key

        TAGS,   A5      ; Type of tag sort to be performed
                        ; (SORT, LIST or INDEX)
                        ; Non-VMS or DBL-ISAM: not used

        TTNUM,  D10, -999 ; Not used

        WORK,   D1, 2   ; Number of work files to use

        DEVNO,  D1      ; Number of device specifications
        DEV,    8A32    ; Device specs for work files

                        ; TEMP=filespec
        TEMP,   A255    ; Spec for temporary output file

                        ; CHAIN=filespec
        CHAIN,  A132    ; Program to chain to

        IDENT,  A39     ; Not used

        MESSIZ, D2      ; Number of characters in message
        MESSGE, A40     ; Message to be sent to program
                        ; specified by CHAIN

        LOCKCC, D1      ; Set if CTRL/C should be disabled

        DETACH, D1      ; Not used
        DIBOL,  D1      ; Not used
        MEMORY, D2      ; Not used
        SU,     D1      ; Not used
        CNTWRK, D1      ; Not used

        FLAGS,  10D1    ; Not used

RECORD,X
        PARMSX, A2727   ; Overlay
        ,       A173
        DMSSGE, D3      ; Overlays 1st 3 chars of MESSGE

© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement