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 |