=====================================================================
     Printing Zero Values as Blanks on Financial Statements
     =====================================================================
     PRODUCT: R:BASE            VERSION:3.x,4.0,4.5
     =====================================================================
     AREA: Reports              CATALOG: FORMS, REPORTS & LABELS
     =====================================================================
     
     R:BASE reports does an excellent job of printing ledger style reports 
     such as financial statements and trial balances. Break point 
     processing (grouping) allows the report to easily summarize 
     the different accounts of the ledger. Commonly, a ledger style report 
     will show all the account names, but leave blank the debits or credits 
     if they have a zero balance. This article shows how to easily print 
     blanks instead of zeros on reports. Take advantage of the new feature 
     of nesting text functions, with an easy way to produce blanks on zero 
     balance fields. 
 
     Most ledger style reports have one column for debits and another one 
     for credits. Since we are discussing financial statements, these 
     fields usually represent currency information. Normally R:BASE would 
     print $0.00 for a zero value on a currency field. Also, in most ledger 
     style reports the location that prints would represent an amount that 
     is the sum of debits or credits. R:BASE would be doing the summing 
     with a defined variable. The summing variable would always hold a 
     value or be zero. Therefore, we must find a way for for our zero 
     values to print blank. R:BASE will let you define some expressions 
     to make the report print values or be blank instead of printing $0.00. 
     Here they are:
 
     vdebittot = SUM OF debits
     vcredittot = SUM OF credits
 
     3.x, 4.0 expressions
     vtextdebit=(CTXT(.vdebittot))
     vtextcredit = (CTXT(.vcredittot))
     vshow_debittot = (IFEQ(.vdebittot,0,' ',.vtextdebit))
     vshow_credittot = (IFEQ(.vcredittot,0,' ',.vtextcredit))
 
     4.5 expressions
     vshow_debittot = (IFEQ(.vdebittot,0,' ',CTXT(.vdebittot)))
     vshow_credittot = (IFEQ(.vcredittot,0,' ',CTXT(.vcredittot)))
 
     The variables vdebittot and vcredittot are summing the values in the 
     credit and debit columns of the database table. You would reset them 
     at the account break.
 
     The CTXT function allows you to change the datatype of the columns to 
     text. You want the field to be blank when the amount is zero, so the 
     field will have to be text datatype which allows for blanks. 
     Fortunately, the logical IFEQ function has the ability to compare 
     numeric datatypes(like currency) and yet return text values. You can 
     use the text variable to return the value that is placed on the report 
     to print. 
 
     Instead of locating the debits and credits columns(which are currency 
     datatype in this example) directly on your report, you would locate 
     vshow_debittot and vshow_credittot. These variables use the new text 
     nesting feature to convert the currency values to text as they are 
     being evaluated within the ifeq logical function. 
 
     One important thing to keep in mind is that text fields would normally 
     print left justified, unlike currency which would print right 
     justified. You can use picture formatting on the located fields to 
     right justify the text. All you would need in the picture clause 
     is [>]. Your report now shows debit and credit totals unless they are 
     zero and in that case it will show a blank. You have used only two 
     additional variables in your report. They have added clarity and have 
     given it the "finished" look.