Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

"A dirty mind is a joy forever." -- Randy Kunkee


computers / comp.sys.unisys / Re: Program from Unisys Advanced DMSII Class to list dataset fields

Re: Program from Unisys Advanced DMSII Class to list dataset fields

<t8iomd$j7o$2@gioia.aioe.org>

  copy mid

https://www.rocksolidbbs.com/computers/article-flat.php?id=130&group=comp.sys.unisys#130

  copy link   Newsgroups: comp.sys.unisys
Path: i2pn2.org!i2pn.org!aioe.org!iNGj/luDezKLilfl3oxwcA.user.46.165.242.75.POSTED!not-for-mail
From: Doug@hyperspace.vogon.gov (Andrew)
Newsgroups: comp.sys.unisys
Subject: Re: Program from Unisys Advanced DMSII Class to list dataset fields
Date: Fri, 17 Jun 2022 22:37:33 +0200
Organization: Aioe.org NNTP Server
Message-ID: <t8iomd$j7o$2@gioia.aioe.org>
References: <ec6cb015-819b-4e57-8080-01981c4e634en@googlegroups.com>
<t8iljt$1f6s$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: gioia.aioe.org; logging-data="19704"; posting-host="iNGj/luDezKLilfl3oxwcA.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.10.2
X-Notice: Filtered by postfilter v. 0.9.2
 by: Andrew - Fri, 17 Jun 2022 20:37 UTC

TKosfeld wrote:
> On 6/17/2022 2:53 PM, Tom Schaefer wrote:
>> A colleague asked me if I knew anybody that might have this program so
>> I said I would ask.
>>
>> He is looking for a program (I presume it was an example) to list all
>> the fields in a dataset by reading the Description file.
>>
>> Does anyone have access to those notes? I suspect things may have
>> changed, but if anyone has it, they would be here.
>>
>> Regards,
>>
>> Tom Schaefer
>
>    BEGIN
>    DEFINE P                =POINTER#
>          ,B                =BOOLEAN#
>          %
>          ,NAMEIN(PX,LX)    =PX+1 FOR MIN(LX,REAL(PX,1))
>                             ," " FOR LX-REAL(PX,1)#
>          ,PRECISION(X)     =((FIRSTONE(SCALERIGHTF(X,12))-1).[8:7]+1)#
>          %
>          ,INIT_BUFO(X)     =BEGIN
>                             REPLACE PO:=P(BUFO) BY " " FOR 108;
>                             REPLACE PO:PO BY X FOR 2 DIGITS
>                                             ," ";
>                             END#
>          ,WRITE_BUFO       =WRITE(INFO_FILE,18,BUFO)#
>          %
>          ,BLOCKF           =[47:16]#      % BLOCK FIELD OF NODE
>          ,LISTF            =[31:16]#      % LIST FIELD OF NODE
>          ,PROPF            =[15:16]#      % PROP FIELD OF NODE
>          %
>          ,DBLISTEND[N]     =DBDESC[(N).LISTF]#
>          ,LISTEND[N]       =DESC  [(N).LISTF]#
>          ,LISTEND2[N]      =DESC2 [(N).LISTF]#
>          %
>          ,DBPROP[N,F]      =DBDESC[(N).PROPF + F]#
>          ,PROP[N,F]        =DESC  [(N).PROPF + F]#
>          ,PROP2[N,F]       =DESC2 [(N).PROPF + F]#
>          ,PROP3[N,F]       =DESC3 [(N).PROPF + F]#
>          %
>          ,DBLISTELEMENT[N,I]
>                            =DBDESC[(N).LISTF + I]#
>          ,LISTELEMENT[N,I] =DESC  [(N).LISTF + I]#
>          ,LISTELEMENT2[N,I]=DESC2 [(N).LISTF + I]#
>          ,LISTELEMENT3[N,I]=DESC3 [(N).LISTF + I]#
>          %
>          ,NAMEOFFSET       =2#  % OFFSET TO THE NAME OF RESTART DS
>          ;
>    FILE INFO_FILE
>           (KIND      =PACK
>           ,MAXRECSIZE=18
>           ,BLOCKSIZE =540
>           ,FRAMESIZE =48
>           ,NEWFILE   =TRUE
>           ,FILEUSE   =OUT
>           )
>        ;
>    REAL DBNODE                    % DATA BASE NODE
>        ,DSSTRUCTURE               % STR. NODE OF DATASET
>        ,LDBSTRUCTURE              % NODE OF LDB
>        ,SETLIST                   % NODE TO LIST OF SETS
>        ;
>    BOOLEAN LDBB                   % LOGICAL DB IN SPEC.
>           ,LDBSETSB               % SET ID'S ARE IN LDB
>           ;
>    ARRAY REFERENCE DBDESC[0]      % DBNODE BUFFER
>                   ;
>    ARRAY BUFO[0:17]
>         ,FLD_NAME_IX[0:1023]
>         ;
>    EBCDIC ARRAY RDSNAME[0:17]     % RESTART DATA SET
>                ,FLD_NAMES[0:9999]
>                ,LDBRDSNAME[0:17]  % RESTART DATA SET ON LDB LIST
>                ;
>    POINTER PO
>           ,PFN
>           ;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE OVERLAYERR;
>    FORWARD;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>  $INCLUDE PROPERTIES = "DATABASE/59189/PROPERTIES" 20000000-26999999
>  $INCLUDE PROPERTIES = "DATABASE/59189/PROPERTIES" 28000000-29999999
>  $INCLUDE PROPERTIES = "DATABASE/59189/PROPERTIES" 33800000-33999999
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE OVERLAYERR;
>    BEGIN
>    DISPLAY("FATAL ERROR");
>    END OF OVERLAYERR;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE GET_INFO_DB;
>    BEGIN
>    REAL LN
>        ,LEN
>        ,LDBTOP
>        ,LDBNODE
>        ;
>    EBCDIC ARRAY WK[0:255]
>                ;
>    POINTER PWK
>           ;
>    ARRAY REFERENCE DESC[0]
>                   ,DESC2[0]
>                   ;
>    %
>    DASOPEN;
>    %
>    INIT_BUFO(01);
>    REPLACE PWK:=WK BY DASDL.TITLE;
>    IF PWK="*"
>    THEN REPLACE PO:PO BY "*"
>                         ," " FOR 17
>    ELSE BEGIN
>         PWK:=*+1;
>         REPLACE PO:PO BY PWK:PWK FOR LEN:17 UNTIL=")"
>                         ," " FOR LEN+1;
>         END;
>    PWK:=*+1;
>    IF PWK="DESCRIPTION/"
>    THEN PWK:=*+12;
>    REPLACE PO:PO BY PWK:PWK FOR LEN:17 WHILE IN ALPHA
>                    ," " FOR LEN+1;
>    IF PWK=" ON "
>    THEN REPLACE PO:PO BY PWK+4 FOR LEN:17 WHILE IN ALPHA
>                         ," " FOR LEN+1
>    ELSE REPLACE PO:PO BY "DISK"
>                         ," " FOR 14;
>    REPLACE PWK:=WK BY DASDL.HOSTNAME;
>    REPLACE PO:PO BY PWK FOR LEN:17 WHILE IN ALPHA
>                    ," " FOR LEN+1;
>    WRITE_BUFO;
>    %
>    READPROP(0,DESC);
>    DBNODE:=DESC[DBNODELOC];
>    LOCKPROP(DBNODE.BLOCKF,DBDESC);
>    %
>    IF LDBB            % SET UP LOGICAL DB
>    THEN BEGIN
>         LDBNODE := DBDESC[DBPROP[DBNODE,LOGICALDATABASENODE]];
>         READPROP(LDBNODE.BLOCKF,DESC);
>         LDBTOP := LISTEND[LDBNODE];
>         LN := 0;
>         WHILE  LN := * + 1 <= LDBTOP
>         DO BEGIN
>            LDBSTRUCTURE := LISTELEMENT[LDBNODE,LN];
>            IF LDBSTRUCTURE.LISTF NEQ 4"0000"
>            THEN BEGIN
>                 READPROP(LDBSTRUCTURE.BLOCKF,DESC2);
>                 % P(PROP2[LDBSTRUCTURE,WORDONE])
>                 END;
>            END;
>         END;
>    END GET_INFO_DB;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE GET_INFO_DATASET_ITEMS(DSSTRUCTURE,RDS);
>    VALUE   DSSTRUCTURE,RDS;
>    REAL    DSSTRUCTURE;
>    BOOLEAN RDS;
>    BEGIN
>    REAL I
>        ,J
>        ,T
>        ,IT
>        ,LV
>        ,ITEM
>        ,ITEMNODE
>        ,ITEMTOP
>        ,DEPENDITEM
>        ;
>    ARRAY REFERENCE DESC[0]
>                   ;
>    POINTER PN
>           ;
>    %
>    PFN:=FLD_NAMES;
>    REPLACE FLD_NAME_IX BY 0 FOR SIZE(FLD_NAME_IX) WORDS;
>    %
>    READPROP(DSSTRUCTURE.BLOCKF, DESC);
>    ITEMNODE := DESC[PROP[DSSTRUCTURE,DATAITEMNODE]];
>    READPROP(ITEMNODE.BLOCKF, DESC);
>    ITEMTOP := LISTEND[ITEMNODE];
>    IT := 0;
>    WHILE IT := * + 1 <= ITEMTOP
>    DO BEGIN
>       ITEM := LISTELEMENT[ITEMNODE,IT];
>       T := PROP[ITEM,TYPEF];
>       IF T >= TYP
>       THEN BEGIN
>            INIT_BUFO(03);
>            PN:=P(PROP[ITEM,WORDONE]);
>            REPLACE PO:PO BY PROP[ITEM,ITEMNUM] FOR 3 DIGITS
>                            ," "
>                            ,PROP[ITEM,LEVELF] FOR 2 DIGITS
>                            ," ";
>            CASE T
>            OF BEGIN
>                GRP: REPLACE PO:PO BY "GRP ";
>               BOLN: REPLACE PO:PO BY "BOLN"
>                FLD: REPLACE PO:PO BY "FLD ";
>               ALPH: REPLACE PO:PO BY "ALPH";
>               DECI: REPLACE PO:PO BY "DECI"
>               DECF: REPLACE PO:PO BY "DECF";
>               BINI: REPLACE PO:PO BY "BINI"
>               BINF: REPLACE PO:PO BY "BINF";
>               BFLT: IF RDS
>                     THEN BEGIN
>                          REPLACE PO:PO BY "XXXX";
>                          PROP[ITEM,DECLAREDLENGTH]:=6;
>                          PROP[ITEM,SIGNF]:=0;
>                          END
>                     ELSE IF PROP[ITEM,RSNFLD]=1
>                          THEN REPLACE PO:PO BY "RSN "
>                          ELSE REPLACE PO:PO BY "BFLT"
>               ELSE: REPLACE PO:PO BY T FOR 4 DIGITS
>               END;
>            REPLACE PO:PO BY " "
>                            ,PROP[ITEM,DECLAREDLENGTH] FOR 5 DIGITS
>                            ," "
>                            ,PROP[ITEM,SCALEFACTOR] FOR 2 DIGITS
>                            ," "
>                            ,PROP[ITEM,SIGNF] FOR 1 DIGITS
>                            ," "
>                            ,PROP[ITEM,TOTALSZ] FOR 5 DIGITS
>                            ," "
>                            ,PROP[ITEM,REQUIREDF] FOR 1 DIGITS
>                            ," "
>                            ,PROP[ITEM,NUMSUBSCRIPTS] FOR 3 DIGITS
>                            ," ";
>            IF PROP[ITEM,VFTYPE]^=0
>            THEN REPLACE PO:PO BY PROP[ITEM,VFTYPE] FOR 2 DIGITS
>                                 ," "
>            ELSE REPLACE PO:PO BY "   ";
>            IF B(PROP[ITEM,OCCURSF])
>            THEN REPLACE PO:PO BY PROP[ITEM,OCCURSMAX] FOR 5 DIGITS
>                                 ," "
>            ELSE REPLACE PO:PO BY "      ";
>  %         IF PROP[ITEM,OCCURSTYPE] = OCCDEPENDING
>  %         THEN BEGIN
>  %              A[DEPENDSC] := 1;
>  %              DEPENDITEM := LISTELEMENT[ITEMNODE,PROP[ITEM,
>  %                OCCURSVARIABLE]];
>  %              REPLACE PTEMP BY P(PROP[DEPENDITEM,WORDONE]) FOR
>  %                (REAL(P(PROP[DEPENDITEM,WORDONE]),1)+1);
>  %              END
>  %         ELSE A[DEPENDSC] := 0;
>            REPLACE PO BY NAMEIN(PN,30);
>            WRITE_BUFO;
>            %
>            FLD_NAME_IX[PROP[ITEM,ITEMNUM]]:=OFFSET(PFN);
>            REPLACE PFN:PFN BY PN FOR REAL(PN,1)+1;
>            END;
>       END;
>    END GET_INFO_DATASET_ITEMS;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE GET_INFO_SET;
>    BEGIN
>    REAL I
>        ,IX
>        ,OP
>        ,WL
>        ,LEN
>        ,SEQ
>        ,STR
>        ,LSTR
>        ,KITEM
>        ,SETTOP
>        ,KNODE
>        ,KDNODE
>        ,KEYTOP
>        ;
>    BOOLEAN WB
>           ;
>    ARRAY REFERENCE DESC [0]
>                   ,DESC2[0]
>                   ,DESC3[0]
>                   ,TEXT [0]
>                   ;
>    POINTER PN
>           ,PW
>           ;
>    %
>    READPROP(SETLIST.BLOCKF, DESC);
>    SETTOP := IF SETLIST IS 0 THEN 0 ELSE LISTEND[SETLIST];
>    I := 0;
>    WHILE I := * + 1 <=SETTOP
>    DO BEGIN
>       IF LDBSETSB
>       THEN BEGIN
>            LSTR := LISTELEMENT[SETLIST,I];
>            READPROP(LSTR.BLOCKF,DESC2);
>            STR := DBLISTELEMENT[DBNODE,PROP2[LSTR,STRUCTURENUM]];
>            END
>       ELSE BEGIN
>            LSTR := DBLISTELEMENT[DBNODE,LISTELEMENT[SETLIST,I]];
>            READPROP(LSTR.BLOCKF, DESC2);
>            READPROPTEXT(LSTR.BLOCKF,DESC2,TEXT);
>            STR := LSTR;
>            END;
>       PN:=P(PROP2[LSTR,WORDONE]);
>       INIT_BUFO(04);
>       REPLACE PO:PO BY NAMEIN(PN,17)
>                       ,"  "
>                       ,PROP2[LSTR,DUPSALLOWED] FOR 1 DIGITS
>                       ," "
>                       ,PROP2[LSTR,DUPSFIRST] FOR 1 DIGITS
>                       ," "
>                       ,PROP2[LSTR,DUPSLAST] FOR 1 DIGITS
>                       ," "
>                       ,PROP2[LSTR,KEYCHANGEALLOW] FOR 1 DIGITS
>                       ," "
>                       ,PROP2[LSTR,SUBSETF] FOR 1 DIGITS
>                       ," "
>                       ,PROP2[LSTR,WHERELIST] FOR 4 DIGITS
>                       ," "
>                       ,PROP2[LSTR,WHERELISTSZ] FOR 3 DIGITS
>                       ," "
>                       ,PROP2[LSTR,KEYCOUNT] FOR 2 DIGITS
>                       ," "
>                       ,PROP2[LSTR,KEYDATACOUNT] FOR 2 DIGITS
>                       ," "
>                       ,PROP2[LSTR,SUBTYPEF] FOR 2 DIGITS;
>       WRITE_BUFO;
>       IF WL:=PROP2[LSTR,WHERELIST]^=0
>       THEN BEGIN
>            INIT_BUFO(08);
>            REPLACE PO:PO BY SEQ:=1 FOR 4 DIGITS
>                            ," "
>                            ,"  ";
>            IX:=0;
>            PW:=P(DESC2[WL]);
>            WHILE OP:=REAL(PW,2) ISNT 4"000A"
>            DO BEGIN
>               PW:=*+2;
>               CASE OP.[15:04]
>               OF BEGIN
>                  00: %
>                      CASE OP.[11:12]
>                      OF BEGIN
>                         15: REPLACE PO:PO BY "(  ";
>                         16: REPLACE PO:PO BY " )";
>                         11: REPLACE PO:PO BY " LT ";
>                         32: REPLACE PO:PO BY " LE ";
>                         22: REPLACE PO:PO BY " EQ ";
>                         33: REPLACE PO:PO BY " NE ";
>                         34: REPLACE PO:PO BY " GE ";
>                         21: REPLACE PO:PO BY " GT ";
>                         31: BEGIN
>                             WRITE_BUFO;
>                             INIT_BUFO(08);
>                             REPLACE PO:PO BY (SEQ:=*+1) FOR 4 DIGITS
>                                             ," ";
>                             REPLACE PO:PO BY "O ";
>                             END;
>                         30: BEGIN
>                             WRITE_BUFO;
>                             INIT_BUFO(08);
>                             REPLACE PO:PO BY (SEQ:=*+1) FOR 4 DIGITS
>                                             ," ";
>                             REPLACE PO:PO BY "E ";
>                             END;
>                         24: REPLACE PO:PO BY " NOT ";
>                         10: REPLACE PO:PO BY " LB";
>                         ELSE:
>                             REPLACE PO:PO BY OP.[11:12] FOR * DIGITS;
>                         END; % Case
>                  01: %
>                      PN:=FLD_NAMES[FLD_NAME_IX[OP.[11:12]]];
>                      IF OFFSET(PO)>40
>                      THEN REPLACE PO:PO BY "C ";
>                      REPLACE PO:PO BY PN+1 FOR REAL(PN,1)
>                                      ," " FOR 40-REAL(PN,1);
>                      PW:=*+2;
>                  02: %
>                      PW:=*+2;
>                  03: %
>                      ;
>                  04: %
>                      ;
>                  09: %
>                      IF OP.[11:12]=1
>                      THEN REPLACE PO:PO BY "TRUE"
>                      ELSE REPLACE PO:PO BY "FALSE";
>                  10: %
>                      LEN:=OP.[11:12];
>                      REPLACE PO:PO BY "K '"
>                                      ,PW FOR LEN
>                                      ,"'"
>                                      ," " FOR 38-LEN;
>                      IF LEN MOD 2 = 1
>                      THEN LEN:=*+1;
>                      PW:=*+LEN;
>                  11: %
>                      PW:=*+2;
>                      LEN:=OP.[11:12];
>                      REPLACE PO:PO BY "K "
>                                      ,PW FOR LEN
>                                      ," " FOR 40-LEN;
>                      IF LEN MOD 2 = 1
>                      THEN LEN:=*+1;
>                      PW:=*+LEN;
>                  12: %
>                      ;
>                  ELSE: %
>                      ;
>                  END; % Case
>               IF READLOCK(FALSE,WB)
>               THEN BEGIN
>                    WRITE_BUFO;
>                    INIT_BUFO(08);
>                    REPLACE PO:PO BY (SEQ:=*+1) FOR 4 DIGITS
>                                    ," ";
>                    END;
>               END; % While
>            WRITE_BUFO;
>            END;
>       %
>       KNODE:=DESC2[PROP2[LSTR,KEYNODE]];
>       KDNODE:=DESC2[PROP2[LSTR,KEYDATANODE]];
>       IF KNODE.BLOCKF^=0
>       THEN BEGIN
>            READPROP(KNODE.BLOCKF,DESC3);
>            KEYTOP:=LISTEND[KNODE];
>            IX:=0;
>            WHILE IX:=*+1 <= KEYTOP
>            DO BEGIN
>               KITEM:=LISTELEMENT3[KNODE,IX];
>               INIT_BUFO(05);
>               REPLACE PO:PO BY IX FOR 3 DIGITS
>                               ," "
>                               ,KITEM.[11:12] FOR 3 DIGITS
>                               ," "
>                               ,KITEM.[39:12] FOR 5 DIGITS
>                               ," "
>                               ,KITEM.[27:16] FOR 5 DIGITS
>                               ," "
>                               ,KITEM.[46:01] FOR 1 DIGITS
>                               ," "
>                               ,KITEM.[45:06] FOR 2 DIGITS;
>               WRITE_BUFO;
>               END;
>            END;
>       %
>       IF KDNODE.BLOCKF^=0
>       THEN BEGIN
>            READPROP(KDNODE.BLOCKF,DESC3);
>            KEYTOP:=LISTEND[KDNODE];
>            IX:=0;
>            WHILE IX:=*+1 <= KEYTOP
>            DO BEGIN
>               KITEM:=LISTELEMENT3[KDNODE,IX];
>               INIT_BUFO(06);
>               REPLACE PO:PO BY IX FOR 3 DIGITS
>                               ," "
>                               ,KITEM.[11:12] FOR 3 DIGITS
>                               ," "
>                               ,KITEM.[39:12] FOR 5 DIGITS
>                               ," "
>                               ,KITEM.[27:16] FOR 5 DIGITS
>                               ," "
>                               ,KITEM.[46:01] FOR 1 DIGITS
>                               ," "
>                               ,KITEM.[45:06] FOR 2 DIGITS;
>               WRITE_BUFO;
>               END;
>            END;
>       END;
>    END GET_INFO_SET;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE GET_INFO_DATASET;
>    BEGIN
>    REAL I
>        ,LN
>        ,SN
>        ,LTOP
>        ,SETS
>        ,DBTOP
>        ;
>    ARRAY REFERENCE DESC[0]
>                   ,DESC2[0]
>                   ,TEXT[0]
>                   ;
>    POINTER PN
>           ;
>    IF LDBB
>    THEN BEGIN
>         READPROP(LDBSTRUCTURE.BLOCKF,DESC2);
>         LTOP := LISTEND2[LDBSTRUCTURE];
>         I := 0;
>         WHILE I := * + 1 <= LTOP
>         DO BEGIN
>            DSSTRUCTURE := LISTELEMENT2[LDBSTRUCTURE,I];
>            READPROP(DSSTRUCTURE.BLOCKF,DESC );
>            % P(PROP[DSSTRUCTURE,WORDONE])
>            END;
>         SETS := PROP[DSSTRUCTURE,SETSF];
>         LDBSETSB := SETS = SETSLIST;
>         SETLIST := IF LDBSETSB THEN DSSTRUCTURE ELSE 0;
>         DSSTRUCTURE :=            % SET UP TO POINT AT ACTUAL DB PROPS
>           DBLISTELEMENT[DBNODE,PROP[DSSTRUCTURE,STRUCTURENUM]];
>         READPROP(DSSTRUCTURE.BLOCKF,DESC);
>         IF SETS = SETSALL OR SETS = SETSEMPTY
>         THEN SETLIST := DSSTRUCTURE;
>         END
>    ELSE BEGIN               % NOT SPECIFIED LDB
>         DBTOP := DBLISTEND[DBNODE];
>         SN := 0;
>         WHILE SN := * + 1 <= DBTOP
>         DO BEGIN
>            DSSTRUCTURE := DBLISTELEMENT[DBNODE,SN];
>            READPROP(DSSTRUCTURE.BLOCKF, DESC);
>            READPROPTEXT(DSSTRUCTURE.BLOCKF,DESC,TEXT);
>            I := PROP[DSSTRUCTURE,TYPEF];
>            INIT_BUFO(02);
>            PN:=P(PROP[DSSTRUCTURE,WORDONE]);
>            REPLACE PO:PO BY NAMEIN(PN,17)
>                            ," ";
>            PN:=P(TEXT[PROP[DSSTRUCTURE,DESCTEXT]]);
>            REPLACE PO:PO BY NAMEIN(PN,40)
>                            ," "
>                            ,PROP[DSSTRUCTURE,SUBTYPEF] FOR 2 DIGITS
>                            ," "
>                            ," "  % BDOTIMIZ
>                            ," "
>                            ,PROP[DSSTRUCTURE,ITEMNUM] FOR 5 DIGITS;
>            %
>            SETLIST := DSSTRUCTURE;
>            %
>            IF PROP[DSSTRUCTURE,TYPEF] = DATASET
>            THEN BEGIN
>                 WRITE_BUFO;
>                 GET_INFO_DATASET_ITEMS(DSSTRUCTURE
>                         ,PROP[DSSTRUCTURE,RESTARTDATASETF]=1);
>                 GET_INFO_SET;
>                 END;
>            END;
>         END;
>    END GET_INFO_DATASET;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    PROCEDURE GET_INFO_RDS;
>    BEGIN
>    REAL I
>        ,RDSSN,STR,LTOP
>        ;
>    POINTER Q
>           ;
>    ARRAY REFERENCE DESC[0]
>                   ,DESC2[0]
>                   ;
>    REPLACE RDSNAME BY " " FOR 18;
>    REPLACE LDBRDSNAME BY " " FOR 18;
>    RDSSN := DBPROP[DBNODE,RESTARTDATASETSN];
>    STR := DBLISTELEMENT[DBNODE,RDSSN];
>    READPROP(STR.BLOCKF,DESC);
>    REPLACE RDSNAME BY Q:= P(PROP[STR,WORDONE]) FOR (REAL(Q,1)+1);
>    IF LDBB
>    THEN BEGIN
>         READPROP(LDBSTRUCTURE.BLOCKF, DESC);
>         LTOP := LISTEND[LDBSTRUCTURE];
>         I := 0;
>         WHILE I := * + 1 <= LTOP
>         DO BEGIN
>            STR := LISTELEMENT[LDBSTRUCTURE,I];
>            READPROP(STR.BLOCKF, DESC2);
>            IF PROP2[STR,STRUCTURENUM] = RDSSN
>            THEN BEGIN
>                  REPLACE LDBRDSNAME BY
>                   Q := P(PROP2[STR,NAMEOFFSET]) FOR
>                        (REAL(Q,1)+1);
>                 IF RDSNAME NEQ LDBRDSNAME FOR 18
>                 THEN REPLACE RDSNAME BY LDBRDSNAME FOR 18;
>                 END;
>            END;
>         END;
>    END GET_INFO_RDS;
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    %%%%%%%%%%%%%%%%%%%%% OUTER BLOCK %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>    %
>    OPEN(INFO_FILE);
>    %
>    GET_INFO_DB;
>    GET_INFO_DATASET;
>    %
>    CLOSE(INFO_FILE,CRUNCH);
>    %
>    END.
>
>

Your .sig says: This email has been checked for viruses by Avast
antivirus software.
https://www.avast.com/antivirus
For that to make sense, your Avast should have verified that source code.

--
This mail has been tested by https://RKIvirus.com/ and has been found to
contain Covid-19. Disinfect after reading.

SubjectRepliesAuthor
o Program from Unisys Advanced DMSII Class to list dataset fields

By: Tom Schaefer on Fri, 17 Jun 2022

3Tom Schaefer
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor