| -* -DEFAULTS &RDBFILE = ' '
-* -SET &MNAME =' ';
-* -SET &MNAME = FPARSE (48, &RDBFILE, 0, 0, 'NAME ', 1, 8, &MNAME);
-* -DEFAULTS &MASTER.A8. = &MNAME
-SET &MASTER =' ';
-SET &SDDNAME =' ';
-SET &SRELNAME=' ';
-SET &WRITE =' ';
-SET &FUNC ='R';
-SET &DEFNAMES = 0;
-SET &KEYCOUNT=' ';
-SET &RDBFILE =' ';
-SET &AFILE =' ';
-SET &MFILE =' ';
-SET &LOOP =' ';
-SET &MSG1 =' ';
-SET &MSG2 =' ';
-SET &TYP_I2 = 7;
-SET &TYP_I4 = 8;
-SET &TYP_I8 = 9;
-SET &TYP_F4 = 10;
-*SET &TYP_D8 = 27;
-SET &TYP_T = 14;
-SET &TYP_VT = 37;
-SET &TYP_ADT = 35;
-TOP
-CRTFORM
-"<10 ---------------------------------------------------- ";
-"<10 | RELATIONAL TABLE DESCRIPTOR FACILITY FOR FOCUS/RDB |";
-"<10 | |";
-"<10 | INFORMATION BUILDERS, INCORPORATED |";
-"<10 ---------------------------------------------------- </3";
-"<8 RDB FILENAME => <T.&RDBFILE "
-"<8 RELATION-NAME => <T.&SRELNAME </2"
-"<8 MASTER FILENAME ==> <T.&MASTER "
-"<8 RDB RELATION-DDNAME => <T.&SDDNAME <50 (QUOTES ARE UNNECESSARY)"
-"<8 LEVEL OF FUNCTIONALITY => <T.&FUNC <50 (R=READ, W=WRITE) </1"
-"<7 <D.&MSG1 "
-"<7 <D.&MSG2 </1 "
-"<14 DEPRESS PF3 KEY TO TERMINATE PROCEDURE "
SET MSG=OFF
-SET &WRITE=DECODE &FUNC('R' 'NO' 'W' 'YES' ELSE ' ');
-IF &FUNC EQ 'R' OR 'W' THEN GOTO CHKDBFIL;
-SET &MSG1='YOU HAVE CHOSEN AN INVALID "LEVEL OF FUNCTIONALITY"';
-SET &MSG2=' PLEASE CHOOSE EITHER AN "R" OR A "W" ';
-GOTO TOP
-*
-CHKDBFIL
-IF (&RDBFILE EQ ' ') OR (&SRELNAME EQ ' ') THEN GOTO BLANKS;
VMS STATE &RDBFILE
-RUN
-IF &RETCODE EQ 0 GOTO CHKBLANK;
-SET &MSG1=' DBMS FILE NOT FOUND OR INVALID ';
-SET &MSG2=' RE-ENTER RDB FILENAME ';
-GOTO TOP
-*
-CHKBLANK
-SET &DEFNAMES = IF (&MASTER EQ ' ') OR (&SDDNAME EQ ' ') THEN 1 ELSE 0;
-IF (&DEFNAMES EQ 0) THEN GOTO CHKFILE;
-SET &MASTER = IF (&MASTER NE ' ') THEN &MASTER
- ELSE FPARSE (48, &RDBFILE, 0, 0, 'NAME ', 1, 8, &MASTER);
-SET &SDDNAME = IF (&SDDNAME NE ' ') THEN &SDDNAME ELSE &MASTER;
-SET &MSG1=' DEFAULTS SELECTED FOR MASTER / DBMS DDNAMES. ';
-SET &MSG2=' DEPRESS <ENTER> TO CONTINUE ';
-GOTO TOP
-*
-BLANKS
-SET &MSG1=' PLEASE INPUT A NON-BLANK ENTRY FOR RDB FILENAME ';
-SET &MSG2=' AND RDB RELATION-NAME ';
-GOTO TOP
-*
-CHKFILE
-SET MFILE = &MASTER || .MAS;
VMS STATE &MFILE
-RUN
-IF &RETCODE NE 0 GOTO OK1;
-SET &MSG1=' THIS MASTER FILENAME EXISTS ALREADY ';
-SET &MSG2=' CHOOSE ANOTHER OR DELETE THIS FILENAME ';
-GOTO TOP
-*
-OK1
-SET AFILE = &MASTER || .ACX;
VMS STATE &AFILE
-RUN
-IF &RETCODE NE 0 GOTO OK2;
-SET &MSG1=' THIS ACCESS FILENAME EXISTS ALREADY ';
-SET &MSG2=' CHOOSE ANOTHER OR DELETE THIS FILENAME ';
-GOTO TOP
-*
-OK2
-*
-* ACCESS RDBFILE TABLE IN RDB FOR SELECTED RDB TABLE AND EXTRACT
-* INFORMATION NEEDED TO BUILD FOCUS MASTER
-*
-TYPE
-TYPE PROCESS INITIATION ... PLEASE STAND BY
FILEDEF RDBFILE DISK &RDBFILE
TABLE FILE RDBFILE
PRINT FLD_DATATYPE FLD_LENGTH FLD_SCALE
BY RFLD_NAME
IF RELATION_NAM IS '&SRELNAME'
IF FLD_DATATYPE IS &TYP_I8 OR &TYP_I4 OR &TYP_I2
OR &TYP_T OR &TYP_VT OR &TYP_ADT
OR &TYP_F4
ON TABLE HOLD AS IXTEMP
END
-RUN
-IF &RECORDS NE 0 GOTO AOK;
-SET &MSG1=' ZERO RECORDS RETRIEVED FROM RDB TABLE DEFINITION: ';
-SET &MSG2=' RDB FILE AND/OR RELATION NAME NOT FOUND ';
-GOTO TOP
-*
-AOK
-*
-* START TO BUILD FOCUS MASTER
-*
-* -TYPE
-* -TYPE OPEN MASTER FILE
FILEDEF MAS DISK &MFILE LRECL 90 RECFM V DISP MOD
-RUN
-WRITE MAS FILE=&MASTER, SUFFIX=RDB
-WRITE MAS SEGNAME=&MASTER, SEGTYPE=S0
-*
-* SET UP DEFINES TO PARSE RDB TABLE
-*
DEFINE FILE IXTEMP
FNAME/A12 = EDIT(RFLD_NAME,'999999999999$$$$$$');
P12/A6 = SUBSTR(18,RFLD_NAME,13,18,6,P12);
ANAME/A12 = IF P12 EQ ' ' THEN FNAME ELSE ' ';
AFLEN/A7 = IF (FLD_LENGTH LT 9)
THEN EDIT( EDIT(FLD_LENGTH), '$$9 ')
ELSE IF (FLD_LENGTH LT 99)
THEN EDIT( EDIT(FLD_LENGTH), '$99 ')
ELSE
EDIT(FLD_LENGTH);
ULEN/A7 = IF (FLD_SCALE NE 0) AND (FLD_DATATYPE EQ &TYP_I2)
THEN EDIT(FLD_SCALE, '6.$$$$9')
ELSE
IF (FLD_SCALE NE 0) AND (FLD_DATATYPE EQ &TYP_I4)
THEN EDIT(FLD_SCALE, '10.$$$$9')
ELSE
IF (FLD_SCALE NE 0) AND (FLD_DATATYPE EQ &TYP_I8)
THEN EDIT(FLD_SCALE, '18.$$$$9')
ELSE
IF (FLD_DATATYPE EQ &TYP_T) OR (FLD_DATATYPE EQ &TYP_VT)
THEN EDIT(AFLEN, '999 ')
ELSE
DECODE FLD_DATATYPE (&TYP_ADT '8YYMD'
&TYP_I8 '12.2' &TYP_I4 '9 ' &TYP_I2 '6 '
&TYP_F4 '8.2 ' ELSE ' ');
UTYP/A1 = IF (FLD_SCALE NE 0)
THEN 'D'
ELSE
DECODE FLD_DATATYPE ( &TYP_T 'A' &TYP_VT 'A' &TYP_ADT 'I'
&TYP_I8 'D' &TYP_I4 'I' &TYP_I2 'I'
&TYP_F4 'F' ELSE ' ');
ATYP/A1 = IF (FLD_SCALE NE 0)
THEN 'F'
ELSE
DECODE FLD_DATATYPE ( &TYP_T 'A' &TYP_VT 'A' &TYP_ADT 'A'
&TYP_I8 'I' &TYP_I4 'I' &TYP_I2 'I'
&TYP_F4 'F' ELSE ' ');
ALEN/A7 = IF (FLD_DATATYPE EQ &TYP_T) OR (FLD_DATATYPE EQ &TYP_VT)
OR (FLD_DATATYPE EQ &TYP_ADT)
THEN EDIT(AFLEN, '999 ')
ELSE
IF (FLD_SCALE NE 0) AND (FLD_DATATYPE EQ &TYP_I8)
THEN '4 '
ELSE
DECODE FLD_DATATYPE (
&TYP_I8 '8 ' &TYP_I4 '4 ' &TYP_I2 '2 '
&TYP_F4 '4 ' ELSE ' ');
LINE/A80=' FIELD='|FNAME|',' |'ALIAS='|ANAME|',' |'USAGE='|UTYP|ULEN
|','|ATYP|ALEN|',$';
END
-RUN
-* CREATE THE FOCUS MASTER FIELD DEFINITIONS
-*
TABLE FILE IXTEMP
PRINT LINE
ON TABLE SAVE AS MAS
END
-*
-* CREATE RDB ACCESS FILE
-*
FILEDEF ACC DISK &AFILE LRECL 90 RECFM V DISP MOD
-RUN
-SET &TABLE1='"' || &SRELNAME || '"';
-SET &TB= &TABLE1 || ',KEYS=' || &KEYCOUNT || ',WRITE=' || &WRITE || ',$';
-WRITE ACC SEGNAME=&MASTER,TABLENAME=&TB
-*,KEYS=&KEYCOUNT,WRITE=&WRITE,$
DEFINE FILE IXTEMP ADD
LINE_ACC/A80=' FIELD='|FNAME|', ALIAS='|RFLD_NAME||' ,$';
END
TABLE FILE IXTEMP
PRINT LINE_ACC
IF ANAME IS ' '
ON TABLE SAVE AS ACC
END
-RUN
-SET &MODE=DECODE &FUNC('R' 'READ' 'W' 'WRITE');
-CRTFORM
-"<10 ---------------------------------------------------- ";
-"<10 | RELATIONAL TABLE DESCRIPTOR FACILITY FOR FOCUS/RDB |";
-"<10 | |";
-"<10 | INFORMATION BUILDERS, INCORPORATED |";
-"<10 ---------------------------------------------------- </3";
-"<14 THIS PROCEDURE HAS TERMINATED SUCCESSFULLY </3 "
-"<11 FOCUS <D.&MODE FUNCTIONALITY ENABLED WITH <D.&KEYCOUNT KEY FIELDS "
-"<11 MASTER FILE DESCRIPTION = <D.&MFILE "
-"<11 ACCESS FILE DEFINITION = <D.&AFILE </3 "
-"<7 ENTER 'Y' TO RUN THIS PROCEDURE AGAIN ============> <T.&LOOP "
-SET &MSG1=' ';
-SET &MSG2=' ';
-IF &LOOP EQ 'Y' THEN GOTO TOP;
SET MSG=ON
-EXIT
|
| FILE=RDBFILE ,SUFFIX=RDB
SEGNAME=RELATION ,SEGTYPE=S0
FIELDNAME =RELATION_NAM ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =RELATION_ID ,ALIAS= ,I5 ,I2 ,$
FIELDNAME =DBKEYLEN ,ALIAS= ,I5 ,I2 ,$
SEGNAME=RELFLDS ,SEGTYPE=S0 ,PARENT=RELATION
FIELDNAME =RFLD_RELNAME ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =RFLD_NAME ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =RFLD_SOURCE ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =RFLD_ID ,ALIAS= ,I5 ,I2 ,$
SEGNAME=INDECES ,SEGTYPE=S0 ,PARENT=RELATION
FIELDNAME =IDX_RELNAME ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =IDX_NAME ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =IDX_SEGCNT ,ALIAS= ,I5 ,I2 ,$
FIELDNAME =IDX_UNIQUE ,ALIAS= ,I5 ,I2 ,$
SEGNAME=IDXFLDS ,SEGTYPE=S0 ,PARENT=INDECES
FIELDNAME =IXFLD_IDXNAM ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =IXFLD_NUMBER ,ALIAS= ,I5, ,I2 ,$
FIELDNAME =IXFLD_NAME ,ALIAS= ,A31 ,A31 ,$
SEGNAME=FIELDS ,SEGTYPE=S0 ,PARENT=RELFLDS
FIELDNAME =FLD_NAME ,ALIAS= ,A31 ,A31 ,$
FIELDNAME =FLD_DATATYPE ,ALIAS= ,I2 ,I2 ,$
FIELDNAME =FLD_LENGTH ,ALIAS= ,I3 ,I2 ,$
FIELDNAME =FLD_SCALE ,ALIAS= ,D5 ,I2 ,$
|
| SEGNAME=RELATION ,TABLENAME='RDB$RELATIONS',$
FIELD =RELATION_NAM ,'RDB$RELATION_NAME' ,$
FIELD =RELATION_ID ,'RDB$RELATION_ID' ,$
FIELD =DBKEYLEN ,'RDB$DBKEY_LENGTH' ,$
SEGNAME=RELFLDS ,TABLENAME='RDB$RELATION_FIELDS',
KEYFLD=RELATION_NAM ,IXFLD=RFLD_RELNAME,$
FIELD =RFLD_RELNAME ,'RDB$RELATION_NAME' ,$
FIELD =RFLD_NAME ,'RDB$FIELD_NAME' ,$
FIELD =RFLD_SOURCE ,'RDB$FIELD_SOURCE' ,$
FIELD =RFLD_ID ,'RDB$FIELD_ID' ,$
SEGNAME=FIELDS ,TABLENAME='RDB$FIELDS',
KEYFLD=RFLD_SOURCE ,IXFLD=FLD_NAME,$
FIELD =FLD_NAME ,'RDB$FIELD_NAME' ,$
FIELD =FLD_DATATYPE ,'RDB$FIELD_TYPE' ,$
FIELD =FLD_LENGTH ,'RDB$FIELD_LENGTH' ,$
FIELD =FLD_SCALE ,'RDB$FIELD_SCALE' ,$
SEGNAME=INDECES ,TABLENAME='RDB$INDECES',
KEYFLD=RELATION_NAM ,IXFLD=IDX_RELNAME,$
FIELD =IDX_RELNAME ,'RDB$RELATION_NAME' ,$
FIELD =IDX_NAME ,'RDB$INDEX_NAME' ,$
FIELD =IDX_SEGCNT ,'RDB$SEGMENT_COUNT' ,$
FIELD =IDX_UNIQUE ,'RDB$UNIQUE_FLAG' ,$
SEGNAME=IDXFLDS ,TABLENAME='RDB$INDEX_SEGMENTS',
KEYFLD=IDX_NAME ,IXFLD=IXFLD_NAME,$
FIELD =IXFLD_IDXNAM ,'RDB$INDEX_NAME' ,$
FIELD =IXFLD_NUMBER ,'RDB$FIELD_POSITION' ,$
FIELD =IXFLD_NAME ,'RDB$FIELD_NAME' ,$
|