Q(uick)BASIC Function: SYD#
Quick View
SYD#
A function that returns the sum-of-years' digits depreciation of an asset for a specified period
Worth knowing
Useful and cross-version information about the programming environments of QBasic and QuickBasic.
Syntax
- SYD# (cost#, salvage#, life#, period#, status%)
Description/Parameter(s)
cost# | The initial cost of the asset. |
salvage# | The value at the end of the useful life of the asset. |
life# | The useful life of the asset. |
period# | Period for which asset depreciation is desired. |
status% | A variable that returns a value indicating calculation failure or success: 0 = success; 1 = failure. |
- The argument life# is the useful life of the asset (or the number of periods over which the asset is being depreciated).
- The arguments life# and period# must use the same units. For example, if life is given in months, period must also be given in months.
- The argument status% can be any variable that returns information about the success or failure of the calculation. The value of status% will be 0 if the calculation was successful, and 1 if it was not.
Important
- To use SYD# in the QBX environment, use the FINANCER.QLB Quick library. To use SYD# outside the QBX environment, link your program with the appropriate FINANCxx.LIB file. Depending on the compiler options you chose when you installed BASIC, one or more of the following files will be available:
Filename | Compiler options |
FINANCER.LIB | 80x87 or emulator math; DOS or OS/2 real mode |
FINANCAR.LIB | Alternate math; DOS or OS/2 real mode |
FINANCEP.LIB | 80x87 or emulator math; OS/2 protected mode |
FINANCAP.LIB | Alternate math; OS/2 protected mode |
- The FINANC.BI header file contains the necessary function declarations for SYD#.
- For more information on using libraries, see "Creating and Using Quick Libraries" and "Using LINK and LIB" in the BASIC Programmer's Guide.
Example
This example uses the SYD# function to return the depreciation of an asset for a specific period using sum-of-years' digits method based on the asset's initial cost, salvage value, and useful life.
Note: To run this example you must use a Quick library that includes the procedures contained in the date/time/format and financial function library files. The following include files must also be present.
'$INCLUDE: 'FINANC.BI'
'$INCLUDE: 'FORMAT.BI'
CONST YEARMONTHS = 12
CONST DOLLARFORMAT$ = "$#,###,##0.00"
DEFDBL A-Z
DIM Status AS INTEGER
CLS
PRINT "Assume you have a piece of expensive manufacturing equipment."
INPUT "Enter the original cost of the equipment"; Cost
PRINT
PRINT "Salvage value is the value of the asset"
PRINT "at the end of its useful life."
INPUT "What is the salvage value of the equipment"; SalvageVal
PRINT
INPUT "What is the useful life of the equipment in months"; Life
IF Life < YEARMONTHS THEN
PRINT
PRINT "If the life is less than a year, it is not an asset."
INPUT "Reenter the useful life of the equipment in months"; Life
END IF
YearsInLife = Life / YEARMONTHS
'Round up to a whole year.
IF YearsInLife <> INT(Life / YEARMONTHS) THEN
YearsInLife = INT(YearsInLife + 1)
END IF
PRINT
PRINT "For what year of the asset's life do you want to calculate ";
INPUT "depreciation "; DeprYear
DO WHILE Depr < YearsInLife AND DeprYear > YearsInLife
PRINT
PRINT "The year you enter must be at least 1, and not more than";
PRINT YearsInLife
INPUT "Reenter the year"; DeprYear
LOOP
PRINT
'Calculate and format the results.
PeriodDepr = SYD#(Cost, SalvageVal, YearsInLife, DeprYear, Status)
'Examine Status to determine success of failure of SYD#.
IF Status THEN
'If unsuccessful, announce a problem.
PRINT "There was an error in calculating depreciation."
ELSE
'If successful, calculate, format, and display the results.
TotalDepr = Cost - SalvageVal
MonthDepr = PeriodDepr / YEARMONTHS
Cost$ = FormatD$(Cost, DOLLARFORMAT$)
SalvageVal$ = FormatD$(SalvageVal, DOLLARFORMAT$)
TotalDepr$ = FormatD$(TotalDepr, DOLLARFORMAT$)
PeriodDepr$ = FormatD$(PeriodDepr, DOLLARFORMAT$)
MonthDepr$ = FormatD$(MonthDepr, DOLLARFORMAT$)
PRINT "If the original cost of your equipment is "; Cost$; ","
PRINT "and the salvage value of that equipment is "; SalvageVal$; ","
PRINT "the total depreciation at the end of its"; Life; "month"
PRINT "lifetime is "; TotalDepr$; ". ";
PRINT "The depreciation in year"; DeprYear
PRINT "is "; PeriodDepr$; " or "; MonthDepr$; " per month."
END IF