Type search words and press enter
Check your pre-qualified business loan offer in TallyCapital with a single click! Based on your financial data, get a tentative offer and apply for a business loan in TallyPrime!
https://help.tallysolutions.com/docs/td9rel54/faq/7731.html

Coding Standards

1. All the Definitions should be indented to the right except the Report, Form and Initial Parts within the Form

The Definitions Report, Form and initial Parts within the Form need not be indented. All the further Definitions like Sub Parts, Lines & Sub Lines and Fields & Sub Fields including Optional Definitions must be indented to the right.

For Example,

[Report: {Report Name}]

Form        : {Form Name}

[Form: {Form Name}]

Parts        : {Part Name 1}, {Part Name 2}

[Part: {Part Name 1}]

Lines        : {Line Name 1}, {Line Name 2}

[Line: {Line Name 1}]

Fields       : {Field Name 1}

Switch      : {Label}:{Optional Line Name 1}: {Condition}

[Field: {Field Name 1}]

Set As      : {Contents of Field 1}

[!Line: {Optional Line Name 1}]

Add          : Field       : {Field Name 2}

[Line: {Line Name 2}]

Fields       : {Field Name 2}

[Field: {Field Name 2}]

Set As      : {Contents of Field 1}

[Part: {Part Name 2}]

Parts        : {Part Name 21}, {Part Name 22}

[Part: {Part Name 21}]

Lines        : {Line Name 1}

[Part: {Part Name 22}]

Lines        : {Line Name 2}

2. Assign Meaningful Names to Definitions, UDFs, Variables & Formulae and use appropriate Prefix to avoid unnecessary clash with Default Definition Names

As far as possible, avoid using names like ABCField. Definition Names must clearly indicate their purpose or usage.

Also, we must use appropriate Prefix to avoid unnecessary clash with the Default Definition Names.

For example,

/* Line & Field Definition for Bank Account No. of the Party is being added for the Company/ Client, Global Marketing Pvt Ltd. (GMPL can be used as a Prefix) */

[Line: GMPL Bank Acct No]

[Field: GMPL Bank Acct No]

[Collection: GMPL List of Ledgers]       ;; Collection Definition for List of Ledgers

[System: Variable]

Variable            : GMPL Only Ledgers        : Logical   : No  ;;; Include Groups

3. As much as possible, align the colons among all the attributes within a definition

The Colons among the attributes within a definition must be properly aligned for better readability.

For Example,

[Menu: DevpLang]

Indent       : "Basics of TDL"

Item          : Blank

Key Item   : "Language Components"    : L  : Menu: TDL Language Components

Key Item   : "Symbols & Prefixes"         : S : Menu: Symbols and Prefixes

Key Item   : "Dimensions & Formatting" : D : Menu: Dimensions and Formatting

Item          : Blank

[Form: Bottom Parts within Form]

Parts            : Default Dimensions

Bottom Parts: BPWF Bottom Part

Height          : 50% Page

Width           : 50% Page

Local : Field  : Default Dimensions : Set as     : "Sample code"

4. Appropriate Case must be maintained –

Logical Operators and Action Keywords need to be written in UPPER case

The Logical operators AND & OR and Actions like DISPLAY, CREATE, ALTER, CALL must be in UPPER CASE.

Keywords must be written in Sentence case

Keywords like If, Then, Else must be in Sentence case.

All others must be in Proper Case

All others including Definition Names, Attributes & their Values must be specified in Proper Case.

5. Maintain the following order of attributes –

If a definition is re-used using Attribute Use, it must be the first attribute.

For example,

[Report: GMPL Trial Balance]

Use          : DSP Template

Form        : GMPL Trial Balance

1 Subsequent attribute used must be the Main Container of the Definition

For example,

[Form: GMPL Trial Balance]

Use           : DSP Template

Part          : GMPL Trial Balance

[Collection: GMPL Ledgers]

Use           : Alias Collection

Type         : Ledger

Height, Width, Style, and other dimensional as well as formatting attributes can follow.

All the Options/ Switches can follow subsequently after an empty line.

For example,

[Field: GMPL Particulars]

Use          : DSP Template

Set As      : $Name

Switch     : GroupLedger  : CS Groups      : $$IsGroup

Switch     : GroupLedger  : CS Ledgers     : $$IsLedger

[!Field: CS Groups]

Variable    : Group Name

Display     : Group Summary

[!Field: CS Ledgers

Variable    : Ledger Name

Display     : Ledger Vouchers

[Collection: CS Ledger]

Use          : Alias Collection

Type        : Ledger

The Order in which attributes must appear in a Summary/ Extract Collection definition is as listed below:

For example,

[Collection: GMPL Vch Summary Collection]

Source Collection  : GMPL Vch Source Collection

Walk                    : Inventory Entries

By                       : PartyLedgerName: $..PartyLedgerName

By                       : StockItemName   : $StockItemName

Aggr Compute      : GMPLTotalQty     : SUM       : $BilledQty

Aggr Compute      : GMPLMaxQty      : MAX       : $BilledQty

Aggr Compute      : GMPLMinQty       : MIN        : $BilledQty

Compute              : StockGroup           : $Parent:StockItem:$StockItemName

Fetch                   : Date, VoucherNumber

/* The above Fetch is meaningful if Grouping of Objects is not done which means if the Source Object Context were intact or to contain the first value */

Search Key           : $PartyLedgerName + $StockItemName

Keep Source         : ().

Filter                    : GMPL Item Filter

Sort                     : Default                   : $PartyLedgerName

6. Coding Standards to be followed while defining a Procedure/ Function

The Order in which attributes must appear in a Function definition is as listed below:

For example,

[Function: GMPL Simple Interest Calculator]

;; Definition Block

Parameter         : P                  : Amount

Parameter         : R                  : Number

Parameter         : N                  : Number   : 10

Returns             : Amount

Variable            : Interest          : Amount

Local Formula   : Interest Calc   : (##P * ##N * ##R) / 100

;; Procedural Block

00     : SET        : Interest          : @InterestCalc

10     : RETURN : ##Interest

Right Indent the Actions within a loop.  In other words, the Action which contains a Start and a corresponding End Action Statement, the Statements within the Action must be right indented to n levels.

For example:

[Function: GMPL Conditions]

00     : IF: <Condition 1>

10     :       <Action Statement 1>

20     : ELSE

30     :       IF: <Condition 2>

40     :               <Action Statement 2>

50     :       ELSE

60     :               IF: <Condition 3>

70     :                       <Action Statement 3>

80     :               ELSE

90     :                       <Action Statement 4>

100   :               END IF

110   :       END IF

120   : END IF

Actions must be in UPPER Case as shown in the above example where Action SET and RETURN are in UPPER Case.

Sub-Routines or Sub-Functions must be called from within the Main Function wherever necessary to improve the performance

For example,

[Function: GMPL Import from Excel]

00     : WALK COLLECTION : GMPL Excel Debtors

10     :       IF     : $$IsEmpty:($Name:Group:$ExcelParent)

20     :               CALL        : GMPL Create GrpLed : “Group” : $ExcelParent

30     :       ENDIF

40     :       IF     : $$IsEmpty:($Name:Ledger:$ExcelLedger)

50     :               CALL        : GMPL Create GrpLed : “Ledger” : $ExcelLedger : $ExcelParent

60     :       END IF

70     : END WALK

[Function: GMPL Create GrpLed]

Parameter : Object Type     : String

Parameter : Object Name   : String

Parameter : Group Name    : String    : $$GroupSundryDebtors

00     : ACTION  : NEW OBJECT       : ##ObjectType

10     :       SET VALUE      : Name   : ##ObjectName

20     :       SET VALUE      : Parent  : ##GroupName

30     : CREATE TARGET

7. Insert proper comments, as and when necessary

Comments improve the readability of the code.  Give proper comments wherever required.

For example,

;; Field definition to allow the user to enter the effective date of the voucher

[Field: Chg VchEffDate]

Note : Default TDL is the best guide to know coding conventions