| Title: | FOCUS, from INFORMATION BUILDERS |
| Moderator: | ZAYIUS::BROUILLETTE |
| Created: | Thu Feb 19 1987 |
| Last Modified: | Mon May 05 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 615 |
| Total number of notes: | 1779 |
When producing a .MAS file from a RMS file, a G_FLOAT field converts
to D8 doesn't it??
If this is true, anybody out there got any ideas as to why my .FEX isn't
pulling out correct decimal Prices....I was informed that Focus doesn't
require conversion of G_floating numbers??? I'm on version 5.2.3
Further... Any ideas on how to create a report using a .MAS which
uses MAPFIELD(i.e variant record) in such a way as to be able to print
report_1
header a b c event fieldx fieldy fieldz
report_2
header a b c event fieldd fielde fieldf
report_3
header a b c event fieldm fieldn fieldo
etc... in one file without massive gaps
without resorting to
TABLE FILE Yuk
IF event EQ 0 THEN PRINT header a b c event fieldx fieldy fieldz
RUN
IF event EQ 1 THEN PRINT header a b c event fieldd fielde fieldf
RUN
IF event EQ 2 THEN PRINT header a b c event fieldm fieldn fieldo
END
I've tried some stuff using Dialogue manager but the thing seems to
hang up...
Maybe I should be using HOLD and then processing the HOLD file, any
ideas??
Thanks in advance
Dave....getting more desparate every day
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 392.1 | Ha Ha...D8 = G_FLOAT | YARD::LI | Here today...Gone tomorrow... | Mon Feb 04 1991 06:47 | 90 |
> When producing a .MAS file from a RMS file, a G_FLOAT field converts
> to D8 doesn't it??
> If this is true, anybody out there got any ideas as to why my .FEX isn't
> pulling out correct decimal Prices....I was informed that Focus doesn't
> require conversion of G_floating numbers??? I'm on version 5.2.3
I was mistaken USAGE = D8.2, ACTUAL = D8 is the way to define G_floats,
But the figures pulled out are incorrect since they have not been
converted.
Focus is inconsistent in the sense that its possible to use G_float
when converting Rdb relations since all that's needed is a
FIELDNAME = BLAH,TYPE=G ,$ in the .ACX
BUT with other external file coversions such as RMS, you have only the
.MAS to play around with...hence there's no TYPE=G clause to use.
I have been informed that FOCUS does not support G_FLOAT for anything
other then RDB relations....this means a conversion routine is
required.
The routine I'm using is MRE$GTOD (Thanks to Dave Otten :-) )
For those interested here is the .MAS file (it describes a Variant
Record, Indexed sequential Audit file with DATE_REC and PART as Primary
& secondary keys)
FILE=AUDIT, SUFFIX=ISAM,$
SEGMENT=ROOT ,SEGTYPE=S0 ,$
GROUP=PRIM_KEY ,ALIAS=KEY ,USAGE=A8 ,A8 ,$
FIELD=DATE_REC ,ALIAS= ,USAGE=A8 ,A8 ,FIELDTYPE=I ,$
FIELD=PART ,ALIAS=KEY1 ,USAGE=A9 ,A9 ,FIELDTYPE=I ,$
FIELD=E_USERNAME ,ALIAS= ,USAGE=A12 ,A12 ,TITLE='USERNAME' ,$
FIELD=EVENT ,ALIAS=MAPFIELD ,USAGE=I1 ,I1 ,$
DEFINE E_PART/A11 = EDIT(PART,'99-99999-99');$
DEFINE E_DATE_REC/A20 = CVTSTIME(20,DATE_REC,E_DATE_REC);$
SEGMENT=PART_CRT ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=CREATE_PRICE ,ALIAS= ,USAGE=D8.2 ,D8,$
FIELD=MAPVALUE ,ALIAS=0 ,USAGE=I1 ,I1 ,$
DEFINE D_CPRICE/D8.2 = MRE$GTOD(CREATE_PRICE,D_CPRICE);$
SEGMENT=BOM_CRT ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=BCR_CHILD ,ALIAS= ,USAGE=A9 ,A9 ,$
FIELD=E_BCR_QTY ,ALIAS= ,USAGE=I4 ,I4 ,$
FIELD=MAPVALUE ,ALIAS=3 ,USAGE=I1 ,I1 ,$
DEFINE E_BCR_CHILD/A11 = EDIT(BCR_CHILD,'99-99999-99');$
SEGMENT=BOM_CHNG ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=BCH_CHILD ,ALIAS= ,USAGE=A9 ,A9 ,$
FIELD=E_BCHOLD_QTY ,ALIAS= ,USAGE=I4 ,I4 ,$
FIELD=E_BCHNEW_QTY ,ALIAS= ,USAGE=I4 ,I4 ,$
FIELD=MAPVALUE ,ALIAS=5 ,USAGE=I1 ,I1 ,$
DEFINE E_BCH_CHILD/A11 = EDIT(BCH_CHILD,'99-99999-99');$
SEGMENT=BOM_DEL ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=BDE_CHILD ,ALIAS= ,USAGE=A9 ,A9 ,$
FIELD=MAPVALUE ,ALIAS=4 ,USAGE=I1 ,I1 ,$
DEFINE E_BDE_CHILD/A11 = EDIT(BDE_CHILD,'99-99999-99');$
SEGMENT=P_C_CHLD ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=PCC_CHILD ,ALIAS= ,USAGE=A9 ,A9 ,$
FIELD=PCC_OLD ,ALIAS= ,USAGE=D8.2 ,D8.2 ,$
FIELD=PCC_NEW ,ALIAS= ,USAGE=D8.2 ,D8.2 ,$
FIELD=MAPVALUE ,ALIAS=6 ,USAGE=I1 ,I1 ,$
DEFINE E_PCC_CHILD/A11 = EDIT(PCC_CHILD,'99-99999-99');$
DEFINE D_PCC_OLD/D8.2 = MRE$GTOD(PCC_OLD,D_PCC_OLD);$
DEFINE D_PCC_NEW/D8.2 = MRE$GTOD(PCC_NEW,D_PCC_NEW);$
SEGMENT=P_C_BOM ,PARENT=ROOT,OCCURS=1 ,$
FIELD=PCB_CHILD ,ALIAS= ,USAGE=A9 ,A9 ,$
FIELD=PCB_OLD ,ALIAS= ,USAGE=D8.2 ,D8 ,$
FIELD=PCB_NEW ,ALIAS= ,USAGE=D8.2 ,D8 ,$
FIELD=MAPVALUE ,ALIAS=7 ,USAGE=I1 ,I1 ,$
DEFINE E_PCB_CHILD/A11 = EDIT(PCB_CHILD,'99-99999-99');$
DEFINE D_PCB_OLD/D8.2 = MRE$GTOD(PCB_OLD,D_PCB_OLD);$
DEFINE D_PCB_NEW/D8.2 = MRE$GTOD(PCB_NEW,D_PCB_NEW);$
SEGMENT=P_C_PART ,PARENT=ROOT ,OCCURS=1 ,$
FIELD=PCP_PRICE ,ALIAS= ,USAGE=I1 ,I1 ,$
FIELD=MAPVALUE ,ALIAS=8 ,USAGE=I1 ,I1 ,$
DEFINE SP_PCP_PRICE/I2 = INT(PCP_PRICE * 2);$
SEGMENT=PRCE_ONE,PARENT=P_C_PART,OCCURS=PCP_PRICE ,$
FIELD=PRCE_ONE_OLD ,ALIAS= ,USAGE=D8.2 ,D8 ,$
FIELD=PRCE_ONE_NEW ,ALIAS= ,USAGE=D8.2 ,D8 ,$
DEFINE D_PR_ONE_OLD/D8.2=MRE$GTOD(PRCE_ONE_OLD,D_PR_ONE_OLD);$
DEFINE D_PR_ONE_NEW/D8.2=MRE$GTOD(PRCE_ONE_NEW,D_PR_ONE_NEW);$
SEGMENT=PRCE_TWO ,PARENT=P_C_PART ,OCCURS=PCP_PRICE ,$
FIELD=PRCE_TWO_OLD ,ALIAS= ,USAGE=D8.2 ,D8 ,$
FIELD=PRCE_TWO_NEW ,ALIAS= ,USAGE=D8.2 ,D8 ,$
DEFINE D_PR_TWO_OLD/D8.2=MRE$GTOD(PRCE_TWO_OLD,D_PR_TWO_OLD);$
DEFINE D_PR_TWO_NEW/D8.2=MRE$GTOD(PRCE_TWO_NEW,D_PR_TWO_NEW);$
| |||||
| 392.2 | Variant RMS ISAM .MAS reporting | YARD::LI | Here today...Gone tomorrow... | Mon Feb 04 1991 07:49 | 196 |
Forgot to mention MRE$GTOD isn't part of Focus, for details on how to
get hold of it see note 360.1 or contact Dave Otten @SBP
> Further... Any ideas on how to create a report using a .MAS which
> uses MAPFIELD(i.e variant record) in such a way as to be able to print
> report_1
> header a b c event fieldx fieldy fieldz
> report_2
> header a b c event fieldd fielde fieldf
> report_3
> header a b c event fieldm fieldn fieldo
Well I tried various methods but the following .FEX is a quick and
dirty I managed to dream up in my desparation....
There are problems with the VMS Append/new_ver since if the .REP file
isn't deleted first, a new version isn't created. However using VMS Append
on its own causes problems if the .REP file doesn't exist in the first
place. The solution would be to first test whether the .REP file existed
in which case don't append/new_ver Else Append/new_ver....
I think the solution lies in the use of the Focus VMS STATE command which
returns a &RETCODE of 0 or non-zero depending on whether the file exists(0)
or not(see section 15-34 Focus users manual for futher details).
I havn't put it in yet though, will update this note when I do.
The quick and dirty solution given below isn't very efficient or
nice,But does work.....ANYBODY out there know better ways of doing it,
or perhaps improvements... the .FEX is by no means finalised yet.
FILEDEF AUDIT DISK AUDIT.DAT
VMS DELETE *.DOC;*
SET WIDTH=132
DEFINE FILE AUDIT
NOWDATE/A8 WITH PART = TODAY(NOWDATE);
NOWTIME/A8 WITH PART = HHMMSS(NOWTIME);
END
TABLE FILE AUDIT
ON TABLE SUBHEAD
"PART CREATION"
"-------------"
" "
PRINT E_PART AS 'PART,CREATED'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF CHANGE'
D_CPRICE AS 'CREATE PRICE'
IF EVENT EQ 0
ON TABLE SAVE AS PART_CRT FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"BOM CREATION"
"------------"
" "
PRINT E_PART AS 'PACKAGE,BOM'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF BOM,CREATION'
E_BCR_CHILD AS 'CHILD CREATED'
E_BCR_QTY AS 'QUANTITY'
IF EVENT EQ 3
ON TABLE SAVE AS BOM_CRT FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"BOM CHANGES"
"-----------"
" "
PRINT E_PART AS 'PACKAGE,BOM'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF BOM,CHANGE'
E_BCH_CHILD AS 'BOM CHILD'
E_BCHOLD_QTY AS 'OLD QUANTITY'
E_BCHNEW_QTY AS 'NEW QUANTITY'
IF EVENT EQ 5
ON TABLE SAVE AS BOM_CHG FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"BOM DELETIONS: Deletion of link between Parent & Child"
"------------------------------------------------------"
" "
PRINT E_PART AS 'PARENT'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF BOM,DELETION'
E_BDE_CHILD AS 'CHILD'
IF EVENT EQ 4
ON TABLE SAVE AS BOM_DEL FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"CHILD PRICE CHANGES"
"-------------------"
" "
PRINT E_PART AS 'PACKAGE,BOM'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
E_PCC_CHILD AS 'BOM CHILD'
D_PCC_OLD AS 'OLD PRICE'
D_PCC_NEW AS 'NEW PRICE'
IF EVENT EQ 6
ON TABLE SAVE AS PC_CHILD FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"BOM PRICE CHANGES"
"-----------------"
" "
PRINT E_PART AS 'PACKAGE,BOM'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
E_PCB_CHILD AS 'BOM CHILD'
D_PCB_OLD AS 'OLD PRICE'
D_PCB_NEW AS 'NEW PRICE'
IF EVENT EQ 7
ON TABLE SAVE AS PC_BOM FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"PRICE CHANGE PART TEST"
"----------------------"
" "
PRINT E_PART AS 'PART'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
PCP_PRICE
IF EVENT EQ 8
ON TABLE SAVE AS PCP_TEST FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"PRICE CHANGE PART: Point Price Only"
"-----------------------------------"
" "
PRINT E_PART AS 'PART'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
D_PR_ONE_OLD AS 'OLD POINT,PRICE'
D_PR_ONE_NEW AS 'NEW POINT,PRICE'
IF EVENT EQ 8
IF PCP_PRICE EQ 2
ON TABLE SAVE AS P_POIN FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"PRICE CHANGE PART: Current Price "
"----------------------------------"
" "
PRINT E_PART AS 'PART'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
D_PR_ONE_OLD AS 'OLD CURRENT,PRICE'
D_PR_ONE_NEW AS 'NEW CURRENT,PRICE'
IF EVENT EQ 8
IF PCP_PRICE EQ 4
ON TABLE SAVE AS P_CURR FORMAT DOC
END
-RUN
-*
TABLE FILE AUDIT
ON TABLE SUBHEAD
"PRICE CHANGE PART: Current & Point Price"
"---------------------------- -----------"
" "
PRINT E_PART AS 'PART'
E_USERNAME AS 'USERNAME'
E_DATE_REC AS 'DATE OF PRICE CHANGE'
D_PR_ONE_OLD AS 'OLD POINT,PRICE'
D_PR_ONE_NEW AS 'NEW POINT,PRICE'
D_PR_TWO_OLD AS 'OLD CURRENT,PRICE'
D_PR_TWO_NEW AS 'NEW CURRENT,PRICE'
IF EVENT EQ 8
IF PCP_PRICE EQ 6
ON TABLE SAVE AS PCP_CUPO FORMAT DOC
END
DELETE AUDIT.REP;*
VMS APPEND/NEW_VER PART_CRT.DOC,*.DOC/EXCLUDE=PART_CRT.DOC AUDIT.REP
| |||||