[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference ilbbak::ibi_focus

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

392.0. "G_FLOAT = D8 in V5.2.3 ??" by YARD::LI (Here today...Gone tomorrow...) Mon Jan 28 1991 07:26

    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.RTitleUserPersonal
Name
DateLines
392.1Ha Ha...D8 = G_FLOAT YARD::LIHere today...Gone tomorrow...Mon Feb 04 1991 06:4790
   >  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.2Variant RMS ISAM .MAS reportingYARD::LIHere today...Gone tomorrow...Mon Feb 04 1991 07:49196
    
    
    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