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}
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
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"
● 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.
● 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
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
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