Title: Authors:
1Introduction
2Authors Francis Mariani Francis Mariani.com
(Canada) Susannah Jones Consultant (United
States) Anthony Alsford EDATA Limited (United
Kingdom) Presentation Title Coding Standards
for WebFOCUS Development Abstract The Three
Virtuosi from three countries, Francis, Susannah,
and Anthony, combine their near-century of
experience to - 'Standards in Coding
Structure, Clarity, Simplicity.
3Introduction
Designing the program
Presentation Layer
Maintainable Code
Questions
4 6. Passing the baton.
7. Modular / Reuseable code.
8. Consistent definitions.
9. Simplifies maintenance.
10. Speed of development.
TOP 10 REASONS FOR STANDARDS IN CODING
5 1. _at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at_
2. Big emergency?
Flip a switch, avoid a meltdown
3. Quick fix?
Might actually work
4. Major overhaul?
Instantly envision the whole thing
5. User confidence soars when your site is
consistent.
TOP 10 REASONS FOR STANDARDS IN CODING
6Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
70. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A25
style STYLE /A8 STY KEYSS STYLE_NAME /A25
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A25
warehouse WH /A2 WH KEYSSCW WH_NAME /A25
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A25
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A25
80. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A25
style STYLE /A8 STY KEYSS STYLE_NAME /A25
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A25
warehouse WH /A2 WH KEYSSCW WH_NAME /A25
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A25
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A25
as short as possible
90. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A25
style STYLE /A8 STY KEYSS STYLE_NAME /A25
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A25
warehouse WH /A2 WH KEYSSCW WH_NAME /A25
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A25
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A25
100. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A24
style STYLE /A8 STY KEYSS STYLE_NAME /A24
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A24
warehouse WH /A2 WH KEYSSCW WH_NAME /A24
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A24
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A24
110. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A24
style STYLE /A8 STY KEYSS STYLE_NAME /A24
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A24
warehouse WH /A2 WH KEYSSCW WH_NAME /A24
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A24
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A24
? list the measures
as they exist in database as they exist in database as they exist in database different in reports
units UNITS /I8 UNITS/I8S
dollars DOLLARS /D8.2 DOLS/P11.2SM
12Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
131. environment variables
? initialize parameters
- makes Dept Status Report for email at 1pm - second comment line -SET FEXNAME'myfex' -SET EDITDATE'5.19.07' -DEFAULT SEA'FOC_NONE' -DEFAULT STY'' -DEFAULT DIV'ALL' -DEFAULT CUST'B2900' -SET exrate 1.20 -SET DD0 'myfex' -SET DD1 'myfex1' -SET server'\\servername\d\'
One, 1, comment line at top, documentation at
the end !
14? line up the equal signs !!!
-SET FEXNAME'myfex' -SET FEXNAME'myfex' -SET FEXNAME'myfex'
-SET EDITDATE'5.19.07' -SET EDITDATE'5.19.07' -SET EDITDATE'5.19.07'
-DEFAULT SEA'FOC_NONE' -DEFAULT SEA'FOC_NONE' -DEFAULT SEA'FOC_NONE'
-DEFAULT STY'' -DEFAULT STY'' -DEFAULT STY''
-DEFAULT DIV'ALL' -DEFAULT DIV'ALL' -DEFAULT DIV'ALL'
-DEFAULT CUST'B2900' -DEFAULT CUST'B2900' -DEFAULT CUST'B2900'
-SET exrate1.20 -SET exrate1.20 -SET exrate1.20
-SET DD0myfex -SET DD0myfex -SET DD0myfex
-SET DD1myfex1 -SET DD1myfex1 -SET DD1myfex1
-DEFAULT bydisOFF -DEFAULT bydisOFF -DEFAULT bydisOFF
-DEFAULT shwpic0 -DEFAULT shwpic0 -DEFAULT shwpic0
-SET shwpicxABS( shwpic -1) -SET shwpicxABS( shwpic -1) -SET shwpicxABS( shwpic -1)
15? line up the equal signs !!!
-SET FEXNAME 'myfex'
-SET EDITDATE '5.19.07'
-DEFAULT SEA 'FOC_NONE'
-DEFAULT STY ''
-DEFAULT DIV 'ALL'
-DEFAULT CUST 'B2900'
-SET exrate 1.20
-SET DD0 myfex
-SET DD1 myfex1
-DEFAULT bydis OFF
-DEFAULT shwpic 0
-SET shwpicx ABS( shwpic - 1 )
? next, complete your environmental variables ? next, complete your environmental variables ? next, complete your environmental variables
SET ASNAMES ON
SET LINES 998
SET PAGE NOPAGE
SET BYDISPLAY bydis
but never use TAB key
Use 0 and 1 for booleans, not ON and OFF, or YES
and NO
16Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
172. resource allocation
? use input parameters for data directories USE
D\IBI\APPS\DIV\INVENTORY.FOC
D\IBI\APPS\CUST\ORDERS2007.FOC AS ORDERS
D\IBI\APPS\CUST\ORDERS2006.FOC AS ORDERS
\\servername\d\IBI\APPS\CUST\ORDERS2005.FOC AS
ORDERSENDFILEDEF DECODEDV DISK
servernameIBI\APPS\DECODEDV.FTM
182. resource allocation
? use input parameters for data directories USE
D\IBI\APPS\DIV\INVENTORY.FOC
D\IBI\APPS\CUST\ORDERS2007.FOC AS ORDERS
D\IBI\APPS\CUST\ORDERS2006.FOC AS ORDERS
\\servername\d\IBI\APPS\CUST\ORDERS2005.FOC AS
ORDERSENDFILEDEF DECODEDV DISK
servernameIBI\APPS\DECODEDV.FTM
? make report headers from input parameters
use a decode file
-DEFAULT DIV DRFILEDEF DECODEDV DISK
D\IBI\APPS\DECODEDV.FTM-RUN-SET headerdiv
IF DIV IS ALL THEN all divisions -
ELSE DECODE DIV(DECODEDV)-TYPE
headerdiv headerdivheaderdiv Dresses
Division
19Whats a decode file?Take a look at the
EDUCFILE see how COURSE_NAME is repeated?
Make a DECODECC file
with a code snippet TABLE FILE EDUCFILE SUM
COMPUTE BLANK/A1 ' ' COMPUTE NAME/A32
'''' COURSE_NAME '''' BY COURSE_CODE
ON TABLE SAVE AS DECODECC END
202. resource allocation
? use input parameters for data directories USE
D\IBI\APPS\DIV\INVENTORY.FOC
D\IBI\APPS\CUST\ORDERS2007.FOC AS ORDERS
D\IBI\APPS\CUST\ORDERS2006.FOC AS ORDERS
\\servername\d\IBI\APPS\CUST\ORDERS2005.FOC AS
ORDERSENDFILEDEF DECODEDV DISK
servernameIBI\APPS\DECODEDV.FTM
? make report headers from input parameters
FILEDEF DECODEDV DISK D\IBI\APPS\DECODEDV.FTM-RU
N-SET headerdiv IF DIV IS ALL THEN all
divisions - ELSE DECODE
DIV(DECODEDV)
? make filters from input parameters
-SET FILTERDIV IF DIV IS ALL THEN
ELSE- IF DIV IS DIV
21Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
223. JOINs
? Clear your joins before making new ones its
just a good habit JOIN CLEAR ? Label your
joins JOIN KEY IN host TO KEY IN guest AS
JPROD to refer to them specifically, to
clear when necessary JOIN CLEAR JPROD? Use
TAG syntax when duplicated field names occur
across files it allows you to use syntax as in
SQL T1.fieldname JOIN KEY IN INVENTRY TO
KEY IN PRODUCT TAG T1 AS JPROD END TABLE FILE
SUM .BY INVENTRY.prod_no BY PRODNAME or
TABLE FILE INVENTORY SUM .BY T1.inv_no BY
PRODNAME
233. JOINs
? Use TAG syntax when joining twice
FIELDSHIP_CODE,.. FIELDSHIP_FROM,..
FIELDSHIP_TO, .. . . .
FIELDSHIP_CODE, .. FIELDCUSTOMERNAME,..
FIELDADDRESS, .. . . .
JOIN SHIP_FROM IN host TO SHIP_CODE IN guest
TAG T1 AS JCUST1 JOIN SHIP_TO IN host TO
SHIP_CODE IN guest TAG T2 AS JCUST2 END TABLE
FILE host PRINT SHIP_FROM T1.CUSTOMERNAME
SHIP_TO T2.CUSTOMERNAME
24Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
254. DEFINEs
? Clear your DEFINES not quite as important
JOIN statements clear DEFINE statements
DEFINE FILE fn CLEAR DEFINE FILE fn ADD
SET KEEPDEFINES ON except DEFINE
FILE HOLD . . . END TABLE FILE HOLD
. . . ON TABLE HOLD END ...
These DEFINEs will still apply to this HOLD file
264. DEFINEs
? lowercase DEFINE FILE CAR icost/D8
IF COUNTRY EQ FRANCE THEN COST exrate
ELSE COST COGS/P11M icost
SALES MN6/A6 F_MN6('200705')
END
274. DEFINEs
? lowercase DEFINE FILE CAR icost/D8
IF COUNTRY EQ FRANCE THEN COST exrate
ELSE COST COGS/P11M icost
SALES MN6/A6 F_MN6('200705')
END? UPPERcase COGS/P11M icost SALES
284. DEFINEs
? lowercase DEFINE FILE CAR icost/D8
IF COUNTRY EQ FRANCE THEN COST exrate
ELSE COST COGS/P11M icost
SALES MN6/A6 F_MN6('200705')
END? UPPERcase COGS/P11M icost SALES
? define business rules in FUNCTIONs , put in
edasprof DEFINE FUNCTION F_MN6(YYM/A6)
yy1/A2 EDIT(YYM,'99') month/A2
EDIT(YYM,'99') mn3/A3 DECODE month(01
Jan 02 Feb 03 Mar 04 Apr 05 May 06 Jun
07 Jul 08 Aug 09 Sep 10 Oct 11 Nov 12 Dec
ELSE ' ') F_MN6/A6 mn3 ' ' yy1 END
MN6/A6F_MN6('200705') - - -gt May 07
290. dictionary
? list the dimensions that describe your business
? stabilize the nomenclature
concept data codes concept data codes concept data codes varname keys code names code names
season SEASON /A1 SEA SEASON_NAME /A24
style STYLE /A8 STY KEYSS STYLE_NAME /A24
color COLOR /A3 CLR KEYSSC COLOR_NAME /A3
division DIV /A2 DIV DIV_NAME /A24
warehouse WH /A2 WH KEYSSCW WH_NAME /A24
customer CUST_ID /A5 CUST KEYSSCWK CUST_NAME /A24
door DOOR_ID /A6 DOOR KEYKD DOOR_NAME /A24
? list the measures
as they exist in database as they exist in database as they exist in database different in reports
units UNITS /I8 UNITS/I8S
dollars DOLLARS /D8.2 DOLS/P11.2SM
cost of goods sold cost of goods sold cost of goods sold COGS/P11M
? and functions ? and functions ? and functions
display date YYM /A6 F_YYM/A6 e.g. 200705 -gt May 07
30Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- maintainable code
315. EXTRACT
? filters in the first phase TABLE FILE CAR
FILTERCAR FILTERCNTRY
FILTERSEATS SUM SALES BY COUNTRY BY CAR ON
TABLE HOLD
12-character name limit
went away!
? the interim HOLD file, name it something other
than HOLD TABLE FILE CAR FILTERCAR . .
. SUM SALES BY COUNTRY BY CAR ON TABLE HOLD AS
HCAR1 END TABLE FILE HCAR1 SUM SALES BY ON
TABLE HOLD AS HCAR2 END
-RUN
325. EXTRACT
? lowercase for branching, easier to
separate from the true body of your
logic. TABLE FILE CAR SUM -GOTO by.BYFIELD
-by.COUNTRY BY COUNTRY AS manufacturing
country -GOTO by.end -by.CAR BY CAR AS
car -GOTO by.end -by.end ON TABLE. .
. END
-RUN -IF FOCERRNUM NE 0 THEN GOTO . .
. ? check for compile errors after every
paragraph , and handle so that your fex
doesnt continue, and process incorrectly.
335. EXTRACT
Readability Its all about readability.
Next year when you go back to look at your fex,
the more readable youve made it, the
faster youll remember what you did . ? align
your AS phrases SUM FIELDONE AS some nice
label FLDTWO AS some other label
345. EXTRACT
Readability Its all about readability.
Next year when you go back to look at your fex,
the more readable youve made it, the
faster youll remember what you did . ? align
your AS phrases SUM FIELDONE AS some nice
label FLDTWO AS some other label ?
separate lines for fieldnames, easier to
count columns for your compute statements. SUM F
IELDONE AS some nice
label FLDTWO AS some other
label FLD3 AS some nice
title COMPUTE FLD4/I8C1C2C3 AS nice
summary
355. EXTRACT
? conditional display -SET field1np IF
THEN ELSE NOPRINT -SET fieldtwonp IF
THEN ELSE - SUM FIELDONE AS
some nice label field1np fieldtwonp.EVAL
FLDTWO AS some other label
365. EXTRACT
? conditional display -SET field1np IF
THEN ELSE NOPRINT -SET field2np IF
THEN ELSE - SUM FIELDONE
AS some nice label field1np
field2np.EVAL FLDTWO AS some other label
375. EXTRACT
? conditional display -SET field1np IF
THEN ELSE NOPRINT -SET field2np IF
THEN ELSE - SUM FIELDONE
AS some nice label field1np
field2np.EVAL FLDTWO AS some other label
? in-line documentation -SET field1np IF
THEN ELSE NOPRINT -SET field2np IF
THEN ELSE - -
lower case and right SUM FIELDONE
AS some nice label field2np
field2np.EVAL FLDTWO AS some other label -
. . . . . . . . . . . . . . . . . . added for
Lucy 9/07 AND COMPUTE RATE/D3FIELDONE/FLDTWO
385. EXTRACT
? drilldowns The payoff for short names and
boolean switches character length of a url
in IE is limited to focexecDD0(SEA
SEA DIVDIV CUSTCUST \
STY STY SHWPIC SHWPIC ) ,
TYPECUSTOMERNAME, DRILLMENUITEMclick for
picture, focexecDD0(SEA SEA
DIVDIV CUST CUSTID \ STY
STY SHWPIC SHWPICX ) ,
DRILLMENUITEMclick for detail,
focexecDD1(SEA SEA DIVDIV CUST CUSTID
\ STY STY SHWPIC SHWPIC
) ,
2k
395. EXTRACT
? drilldowns The payoff for short names and
booleans. character length is limited to
2k focexecDD0(SEA SEA DIVDIV
CUSTCUST \ STY STY
SHWPIC SHWPIC ) , TYPECUSTOMERNAME,
DRILLMENUITEMclick for picture,
focexecDD0(SEA SEA DIVDIV CUST CUSTID
\ STY STY SHWPIC SHWPICX
) , DRILLMENUITEMclick for detail,
focexecDD1(SEA SEA DIVDIV CUST CUSTID
\ STY STY SHWPIC SHWPIC
) ,
? Elegant code is beautiful, fun to write, but
self-indulgent. Clarity and self-documenting
code beats elegance.
40Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- 5. data extract(s)
- presentation layer
- 7. maintainable code
416. Presentation Layer
- Importance of Presentation
- A well presented layout will have
- The heading identifying the content
- The user able to discern the facts from the
report - Enough information about the report
- program, date and time, user, pages etc.
- Readability without aides
- Due consideration to colour usage
- Using Company colour scheme to promote Corporate
image - Garish colours do not encourage end users to
utilise reports - Too many colours can detract from content
- Differing output formats do not support certain
colours - Use colour codes instead of names
- Printed / Viewed only report requirements
- Excessive colours can be expensive on toner!!
42- Report Sections
- Heading
- Corporate Image?
- Report title(s)
- Domain (Department?)
- Reporting Group
- Report description
- Report level Summary, Detail
- Parameters
- Date range selections
- Verbose text not codes
43- Report Sections
- Footing
- Date and time of creation
- Know to which time frame the report relates
- User identity
- Who created the report
- Batch
- Individual via portal
- Page numbering
- What page is this?
- How many pages?
- Data sensitivity
- Commercial in Confidence
- Program information?
- Consider support requirements as well
Produced by UserId Page x of y Created on Date at Time
44- Report Sections
- Report Body
- Well laid out
- Can the User discern the facts?
- Is the report easily readable
- Report audience with disabilities
- Consider disparate output pitfalls
- Image locations differ between HTML and PDF
- URL resource or embedded
- Is the report paneled in PDF?
- Have different report layouts with Sub Heads on
sort fields - SQUEEZE or WRAP wide columns
- Output via Report Caster (Report Broker)
- Single Excel output
- SET PAGE-NUM OFF
- Multiple worksheet bursting
- ON TABLE PCHOLD FORMAT EXL2K BYTOC
- Data density - Verbose or sparse
- BYDISPLAY
45- Report Styling
- Content - colouring, imaging and report usage
- Corporate colour scheme
- Avoid garish colours
- Red and Green together Ugh!
- Images and / or Corporate logo
- Avoid domination of report heading
- Data type styling
- Negative values
- Braced
- Coloured red
- Fonts and Sizing
- Three (generally available) main faces arial,
verdana, trebuchet - Disparate output formats
- Special report usage
- OCR
- Printing a report
- Will the report print equally as well in colour
as mono?
46- Report Styling
- Specific tips on using colours
- Use codes instead of names
- Use Web page advice
- Using websafe colour ranges
- 00, 33, 66, 99, CC, FF
- Some colour printers are not able to discriminate
- Closely related colours print the same
- Do not use too many colours
- Can make a report unbearable to view
- Some people have Colour blindness
- Fonts and Sizing
- Are internal reports to be styled differently to
external? - Separate styling code modules (CSS, WebFOCUS
Style etc.) - Report special usage
- Disabled person(s) as target audience
- Particular layout requirement (e.g. OCR)
Colorsontheweb.com
47Fex construction
- 0. dictionary
- 1. environment variables
- 2. resource allocation
- 3. JOINs
- 4. DEFINEs
- data extract(s)
- presentation layer
- maintainable code
487. Maintainable Code
- Design of components
- Flexibility of report static components
- Header, Footer, Imagery
- Image physical locations for differing output
formats - PDF and HTML require different locations
- Will the report be used via Report Caster
- Well formed or complete URLs (excl. PDF)
- Parameterise
- Well formed and laid out
- Program synopsis in header
- Indentation
- Code blocks
- Aligned
- Commented (Documented)
- Consistent
49An example A typical report layout
Produced by UserId Page x of y Created on Date at Time
50An example Coding the flexible heading and
footing
HEADING " lt0 Rep_Heading" " lt0
Rep_Heading1" " lt0 Rep_Heading2" " lt0
Rep_Heading3" "Rep_Dates lt0 " - Only show
those parameter lines that contain data. -IF
Rep_Parms1.LENGTH LE 1 AND Rep_Parms2.LENGTH LE
1 THEN SkipPrm1 "Rep_Parms1
lt0gtRep_Parms2" -SkipPrm1 -IF
Rep_Parms3.LENGTH LE 1 AND Rep_Parms4.LENGTH LE
1 THEN SkipPrm2 "Rep_Parms3
lt0gtRep_Parms4" -SkipPrm2 -IF
Rep_Parms5.LENGTH LE 1 AND Rep_Parms6.LENGTH LE
1 THEN SkipPrm3 "Rep_Parms5
lt0gtRep_Parms6" -SkipPrm3 -IF
Rep_Parms7.LENGTH LE 1 AND Rep_Parms8.LENGTH LE
1 THEN SkipPrm4 "Rep_Parms7
lt0gtRep_Parms8" -SkipPrm4
FOOTING BOTTOM "Produced by Userid
lt0gtPageltTABPAGENO of ltTABLASTPAGElt0gtCreated
on RepDate at RepTime"
51An example Default variables used in heading
and footing
- Default report variables to ensure focexec
doesn't prompt or fail -DEFAULT WFFMT
'HTML' -DEFAULT Rep_Heading 'Possible
WebFOCUS Standard' -DEFAULT Rep_Heading1
'' -DEFAULT Rep_Heading2 '' -DEFAULT
Rep_Heading3 'Reporting Criteria' -DEFAULT
Rep_Dates '' -DEFAULT Rep_Parms1 '' ,
Rep_Parms2 '' , Rep_Parms3 '' , Rep_Parms4
'' -DEFAULT Rep_Parms5 '' , Rep_Parms6
'' , Rep_Parms7 '' , Rep_Parms8 '' -SET
Userid GETUSER(USERID) -SET
RepDate DATEtDMYY -SET RepTime
EDIT(TOD,'999999')
52An example WebFOCUS style sheet - cover main
output formats
TYPEHEADING, LINE1, ITEM1, CLASSHeadline1a,
WIDTH1.75, JUSTIFYLEFT, STYLEBOLD,
SIZE14, TYPEHEADING, LINE1, ITEM2,
CLASSHeadline1b, WIDTH5.75, JUSTIFYLEFT,
STYLEBOLD, SIZE14, TYPEHEADING, LINE2,
ITEM1, CLASSHeadLine2a, WIDTH1.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE2, ITEM2, CLASSHeadLine2b, WIDTH5.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE3, ITEM1, CLASSHeadLine3a, WIDTH1.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE3, ITEM2, CLASSHeadLine3b, WIDTH5.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM1, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM2, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE5, ITEM1, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE5, ITEM2, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM1, CLASSFootPart1, WIDTH2.62,
JUSTIFYLEFT, STYLEBOLD, SIZE8,
TYPEFOOTING, LINE1, ITEM2, CLASSFootPart2,
WIDTH0.90, JUSTIFYRIGHT, STYLEBOLD, SIZE8,
TYPEFOOTING, LINE1, ITEM3, CLASSFootPart3,
WIDTH0.15, JUSTIFYCENTER, STYLEBOLD,
SIZE8, TYPEFOOTING, LINE1, ITEM4,
CLASSFootPart3, WIDTH0.15, JUSTIFYCENTER,
STYLEBOLD, SIZE8, TYPEFOOTING, LINE1,
ITEM5, CLASSFootPart3, WIDTH0.15,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM6, CLASSFootPart4, WIDTH3.37,
JUSTIFYRIGHT, STYLEBOLD, SIZE8,
53An example Using external Cascading Style
Sheets HTML control
.HeadLine1a font-familyTahoma font-size14pt
font-weightbold color000000
background-colorFFFFFF width29
text-alignleft border-style NONE .HeadLine1b
font-familyTahoma font-size14pt
font-weightbold color000000
background-colorFFFFFF width69
text-alignleft border-style NONE .HeadLine2a
font-familyTahoma font-size12pt
font-weightbold color000000
background-colorFFFFFF width29
text-alignleft border-style NONE .HeadLine2b
font-familyTahoma font-size12pt
font-weightbold color000000
background-colorFFFFFF width69
text-alignleft border-style NONE .HeadLine3a
font-familyTahoma font-size10pt
font-weightbold color000000
background-colorFFFFFF width29
text-alignleft border-style NONE .HeadLine3b
font-familyTahoma font-size10pt
font-weightbold color000000
background-colorFFFFFF width69
text-alignleft border-style NONE .HeadLine4
font-familyTahoma font-size10pt
font-weightbold color000000
background-colorFFFFFF width49
text-alignleft border-style NONE .HeadLine5
font-familyTahoma font-size8pt
font-weightbold color000000
background-colorFFFFFF width49
text-alignleft border-style NONE .HeadLine6
font-familyTahoma font-size8pt
font-weightbold color000000
background-colorFFFFFF width49
text-alignleft vertical-alignmiddle
border-style NONE .FootPart1
font-familyTahoma font-size8pt
font-weightnormal color000000
background-colorFFFFFF width35
text-alignleft border-style NONE .FootPart2
font-familyTahoma font-size8pt
font-weightnormal color000000
background-colorFFFFFF width12
text-alignright border-style NONE .FootPart3
font-familyTahoma font-size8pt
font-weightnormal color000000
background-colorFFFFFF width2
text-aligncenter border-style
NONE .FootPart4 font-familyTahoma
font-size8pt font-weightnormal color000000
background-colorFFFFFF width45
text-alignright border-style NONE
54-DEFAULT WFFMT 'EXL2K' -DEFAULT
FontName 'Helvetica' -DEFAULT Rep_Heading
'Focus on Developers' -DEFAULT Rep_Heading1
'Thought provoking Style' -DEFAULT Rep_Heading2
'' -DEFAULT Rep_Dates '' -DEFAULT
Rep_Parms1 '' , Rep_Parms2 '' ,
Rep_Parms3 '' , Rep_Parms4 '' -DEFAULT
Rep_Parms5 '' , Rep_Parms6 '' ,
Rep_Parms7 '' , Rep_Parms8 '' -SET Userid
GETUSER(USERID) -SET RepDate
DATEtDMYY -SET RepTime
EDIT(TOD,'999999') SET CSSURL
'/approot/baseapp/standard.css' SET HTMLCSS
ON DEFINE FILE CAR IMG/A50 MISSING ON IF
'WFFMT' EQ 'EXL2K' THEN 'ltimg src/ibi_html/web.g
if border0 classHeadimggt' ELSE
MISSING END TABLE FILE CAR SUM RCOST
DCOST BY COUNTRY BY CAR BY MODEL ON TABLE PCHOLD
FORMAT WFFMT HEADING " lt0 Rep_Heading" "
lt0 Rep_Heading1" " lt0 Rep_Heading2" " lt0
Rep_Heading3" "Rep_Dates lt0 " - Only show
those parameter lines that contain data. -IF
Rep_Parms1.LENGTH LE 1 AND Rep_Parms2.LENGTH LE
1 THEN SkipPrm1 "Rep_Parms1
lt0gtRep_Parms2" -SkipPrm1 -IF
Rep_Parms3.LENGTH LE 1 AND Rep_Parms4.LENGTH LE
1 THEN SkipPrm2 "Rep_Parms3
lt0gtRep_Parms4" -SkipPrm2 -IF
Rep_Parms5.LENGTH LE 1 AND Rep_Parms6.LENGTH LE
1 THEN SkipPrm3 "Rep_Parms5
lt0gtRep_Parms6" -SkipPrm3 -IF
Rep_Parms7.LENGTH LE 1 AND Rep_Parms8.LENGTH LE
1 THEN SkipPrm4 "Rep_Parms7
lt0gtRep_Parms8" -SkipPrm4 FOOTING BOTTOM
"Produced by Userid lt0gtPageltTABPAGENO of
ltTABLASTPAGElt0gtCreated on RepDate at
RepTime" ON TABLE SET STYLE UNITSIN,
PAGESIZE'A4', LEFTMARGIN0.20, RIGHTMARGIN0.20,
TOPMARGIN0.20, BOTTOMMARGIN0.20,
SQUEEZEON, ORIENTATIONPORTRAIT, -
TYPEREPORT, - FONT'FontName', SIZE9,
COLOR'BLACK', BACKCOLOR'NONE', STYLENORMAL, -
BORDERLIGHT, BORDER-STYLESOLID,
BORDER-COLOR'SILVER', TYPEHEADING,
IMAGE/ibi_html/web.gif, CLASSHeadimg, -
TYPEHEADING, BORDERLIGHT, SIZE8,
BACKCOLOR'WHITE', STYLEBOLD, TYPEHEADING,
LINE1, ITEM1, CLASSHeadline1, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE14, TYPEHEADING,
LINE1, ITEM2, CLASSHeadline1, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE14, TYPEHEADING,
LINE2, ITEM1, CLASSHeadLine2, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE2, ITEM2, CLASSHeadLine2, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE3, ITEM1, CLASSHeadLine3, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE3, ITEM2, CLASSHeadLine3, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM1, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM2, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE5, ITEM1, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE5, ITEM2, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM1, CLASSFootPart1, WIDTH2.62,
JUSTIFYLEFT, STYLEBOLD, SIZE8,
TYPEFOOTING, LINE1, ITEM2, CLASSFootPart2,
WIDTH0.90, JUSTIFYRIGHT, STYLEBOLD, SIZE8,
TYPEFOOTING, LINE1, ITEM3, CLASSFootPart3,
WIDTH0.15, JUSTIFYCENTER, STYLEBOLD,
SIZE8, TYPEFOOTING, LINE1, ITEM4,
CLASSFootPart3, WIDTH0.15, JUSTIFYCENTER,
STYLEBOLD, SIZE8, TYPEFOOTING, LINE1,
ITEM5, CLASSFootPart3, WIDTH0.15,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM6, CLASSFootPart4, WIDTH3.37,
JUSTIFYRIGHT, STYLEBOLD, SIZE8, ENDSTYLE END
557. Reusable Code
- Reusability of components
- Coding modules
- Parameterise
- Reduction of maintenance
- One change fixes all
- Decreases development time
- Ease of Usage by Power Users in End User
reporting - Consistency across BI
- Easier learning curve
- of learning complexities of style sheets
56Reducing code development and maintenance timings
-INCLUDE std_init DEFINE FILE CAR IMG/A36 WITH
COUNTRY MISSING ON IF 'WFFMT' EQ 'EXL2K'
THEN 'ltimg srcImageFile border0gt' ELSE
MISSING END TABLE FILE CAR SUM RCOST AS
'Retail Cost' DCOST AS 'Dealer Cost' BY
COUNTRY AS 'Country' SUM RCOST AS 'Retail
Cost' DCOST AS 'Dealer Cost' BY COUNTRY
BY CAR AS 'Car' SUM RCOST AS 'Retail Cost'
DCOST AS 'Dealer Cost' BY COUNTRY BY CAR
BY MODEL AS 'Model' -INCLUDE std_head -INCLUDE
std_foot ON TABLE PCHOLD FORMAT WFFMT ON TABLE
SET HTMLCSS ON ON TABLE SET STYLE -INCLUDE
std_style ENDSTYLE END -RUN
-
- Focexec std_init.fex - -
Author Anthony Alsford - EDATA Limited - -
Date 29 August 2006 - - Project IBI User
Conference 2007 - WebFOCUS Reporting
Standards - - Purpose Provide initialisation
procedure for standard - reporting
within WebFOCUS. - -
-DEFAULT WFFMT
'HTML' -SET ImageFile IF 'WFFMT.EVAL' EQ
'PDF' THEN 'web.gif' ELSE '/ibi_html/web.gif' -SE
T ImagePos IF 'WFFMT.EVAL' EQ 'PDF' THEN '
POSITION(5.50 0.00), ' ELSE '' -DEFAULT
Rep_Heading 'Focus on Developers' -DEFAULT
Rep_Heading1 'Thought provoking
Style' -DEFAULT Rep_Heading2 '' -DEFAULT
Rep_Dates '' -DEFAULT Rep_Parms1 '' ,
Rep_Parms2 '' , Rep_Parms3 '' , Rep_Parms4
'' -DEFAULT Rep_Parms5 '' , Rep_Parms6 ''
, Rep_Parms7 '' , Rep_Parms8 '' -SET
Userid GETUSER(USERID) -SET RepDate
DATEtDMYY -SET RepTime EDIT(TOD,'999999'
) -RUN SET CSSURL '/approot/standards/standard
.css' SET HTMLCSS ON SET NODATA ''
57Reducing code development and maintenance timings
-INCLUDE std_init DEFINE FILE CAR IMG/A36 WITH
COUNTRY MISSING ON IF 'WFFMT' EQ 'EXL2K'
THEN 'ltimg srcImageFile border0gt' ELSE
MISSING END TABLE FILE CAR SUM RCOST AS
'Retail Cost' DCOST AS 'Dealer Cost' BY
COUNTRY AS 'Country' SUM RCOST AS 'Retail
Cost' DCOST AS 'Dealer Cost' BY COUNTRY
BY CAR AS 'Car' SUM RCOST AS 'Retail Cost'
DCOST AS 'Dealer Cost' BY COUNTRY BY CAR
BY MODEL AS 'Model' -INCLUDE std_head -INCLUDE
std_foot ON TABLE PCHOLD FORMAT WFFMT ON TABLE
SET HTMLCSS ON ON TABLE SET STYLE -INCLUDE
std_style ENDSTYLE END -RUN
-
- Focexec std_head.fex - -
Author Anthony Alsford - EDATA Limited - -
Date 29 August 2006 - - Project IBI User
Conference 2007 - WebFOCUS Reporting
Standards - - Purpose Provide standard heading
using variable - reporting within
WebFOCUS. - -
HEADING " lt0
Rep_Heading" " lt0 Rep_Heading1" " lt0
Rep_Heading2" " lt0 Rep_Heading3"
"Rep_Dates lt0 " - Only show those parameter
lines that contain data. -IF Rep_Parms1.LENGTH
LE 1 AND Rep_Parms2.LENGTH LE 1 THEN SkipPrm1
"Rep_Parms1 lt0gtRep_Parms2" -SkipPrm1 -IF
Rep_Parms3.LENGTH LE 1 AND Rep_Parms4.LENGTH LE
1 THEN SkipPrm2 "Rep_Parms3
lt0gtRep_Parms4" -SkipPrm2 -IF
Rep_Parms5.LENGTH LE 1 AND Rep_Parms6.LENGTH LE
1 THEN SkipPrm3 "Rep_Parms5
lt0gtRep_Parms6" -SkipPrm3 -IF
Rep_Parms7.LENGTH LE 1 AND Rep_Parms8.LENGTH LE
1 THEN SkipPrm4 "Rep_Parms7
lt0gtRep_Parms8" -SkipPrm4
58Reducing code development and maintenance timings
-INCLUDE std_init DEFINE FILE CAR IMG/A36 WITH
COUNTRY MISSING ON IF 'WFFMT' EQ 'EXL2K'
THEN 'ltimg srcImageFile border0gt' ELSE
MISSING END TABLE FILE CAR SUM RCOST AS
'Retail Cost' DCOST AS 'Dealer Cost' BY
COUNTRY AS 'Country' SUM RCOST AS 'Retail
Cost' DCOST AS 'Dealer Cost' BY COUNTRY
BY CAR AS 'Car' SUM RCOST AS 'Retail Cost'
DCOST AS 'Dealer Cost' BY COUNTRY BY CAR
BY MODEL AS 'Model' -INCLUDE std_head -INCLUDE
std_foot ON TABLE PCHOLD FORMAT WFFMT ON TABLE
SET HTMLCSS ON ON TABLE SET STYLE -INCLUDE
std_style ENDSTYLE END -RUN
-
- Focexec std_foot.fex - -
Author Anthony Alsford - EDATA Limited - -
Date 29 August 2006 - - Project IBI User
Conference 2007 - WebFOCUS Reporting
Standards - - Purpose Provide standard footing
using variable - reporting within
WebFOCUS. - -
FOOTING BOTTOM
"Produced by Userid lt0gtPageltTABPAGENO of
ltTABLASTPAGElt0gtCreated on RepDate at RepTime"
59Reducing code development and maintenance timings
-INCLUDE std_init DEFINE FILE CAR IMG/A36 WITH
COUNTRY MISSING ON IF 'WFFMT' EQ 'EXL2K'
THEN 'ltimg srcImageFile border0gt' ELSE
MISSING END TABLE FILE CAR SUM RCOST AS
'Retail Cost' DCOST AS 'Dealer Cost' BY
COUNTRY AS 'Country' SUM RCOST AS 'Retail
Cost' DCOST AS 'Dealer Cost' BY COUNTRY
BY CAR AS 'Car' SUM RCOST AS 'Retail Cost'
DCOST AS 'Dealer Cost' BY COUNTRY BY CAR
BY MODEL AS 'Model' -INCLUDE std_head -INCLUDE
std_foot ON TABLE PCHOLD FORMAT WFFMT ON TABLE
SET HTMLCSS ON ON TABLE SET STYLE -INCLUDE
std_style ENDSTYLE END -RUN
-
- Focexec std_style.fex - -
Author Anthony Alsford - EDATA Limited - -
Date 29 August 2006 - - Project IBI User
Conference 2007 - WebFOCUS Reporting
Standards - - Purpose Provide standard styling
using variable - reporting within
WebFOCUS. - -
UNITSIN,
PAGESIZE'A4', LEFTMARGIN0.20, RIGHTMARGIN0.20,
TOPMARGIN0.20, BOTTOMMARGIN0.20,
SQUEEZEON, ORIENTATIONPORTRAIT,
BACKCOLORRGB(240 245 255), TYPEHEADING,
IMAGEImageFile, CLASSHeadImg, SIZE(2.25
0.45), ImagePos TYPEHEADING, BORDERLIGHT,
BORDER-STYLESOLID, SIZE8, BACKCOLOR'WHITE',
STYLEBOLD, TYPEHEADING, LINE1, ITEM1,
CLASSHeadline1a, WIDTH1.75, JUSTIFYLEFT,
STYLEBOLD, SIZE14, TYPEHEADING, LINE1,
ITEM2, CLASSHeadline1b, WIDTH5.75,
JUSTIFYLEFT, STYLEBOLD, SIZE14, TYPEHEADING,
LINE2, ITEM1, CLASSHeadLine2a, WIDTH1.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE2, ITEM2, CLASSHeadLine2b, WIDTH5.75,
JUSTIFYLEFT, STYLEBOLD, SIZE12, TYPEHEADING,
LINE3, ITEM1, CLASSHeadLine3a, WIDTH1.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE3, ITEM2, CLASSHeadLine3b, WIDTH5.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM1, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE4, ITEM2, CLASSHeadLine4, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE10, TYPEHEADING,
LINE5, ITEM1, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE5, ITEM2, CLASSHeadLine5, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE6, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE7, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE8, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM1, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEHEADING,
LINE9, ITEM2, CLASSHeadLine6, WIDTH3.75,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM1, CLASSFootPart1, WIDTH2.62,
JUSTIFYLEFT, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM2, CLASSFootPart2, WIDTH1.05,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM3, CLASSFootPart3, WIDTH0.15,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM4, CLASSFootPart3, WIDTH0.15,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM5, CLASSFootPart3, WIDTH0.15,
JUSTIFYCENTER, STYLEBOLD, SIZE8, TYPEFOOTING,
LINE1, ITEM6, CLASSFootPart4, WIDTH3.37,
JUSTIFYRIGHT, STYLEBOLD, SIZE8,
60Resulting in consistent look and feel and highly
maintainable code
61 1. _at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at__at_
1. SO THAT YOU CAN READ YOUR OWN CODE!
2. Big emergency?
Flip a switch, avoid a meltdown
3. Quick fix?
Might actually work
4. Major overhaul?
Instantly envision the whole thing
5. User confidence soars when your site is
consistent.
TOP 10 REASONS FOR STANDARDS IN CODING
62Report Caster good idea
killcast.fex -SET KILLRPC N
63Report Caster good idea
Make a backup copy of your empty Caster log file,
on the day you first install
To purge your caster log,stop caster, and
overwrite your botlog files from your backup
Faster than Purge
64Report Caster good idea
Get the .gifs out of the .war file
Faster loading, if you have to get in on a dial-
up line
65MRE good idea - names
Dont do this!Dont name your domain, your
report group, your folder, or your fex with its
long, display name
66MRE good idea - names
Do name your domain with a nice directory name,
. . .
67MRE good idea - names
then give the nice long display name in the
Properties Box
68MRE good idea - names
Display name sorts in alpha order, True domain
directory name is unchanged.
69MRE good idea - names
Number your fexes in run order
Mres random fex names are for temp work, only
70Introduction
Designing the program
Presentation Layer
Database
Questions
71Things should be made as simple as possible, but
no simpler Albert Einstein 1933
Questions