Good programmers shouldn't make wild assumptions about programs they know nothing about. And they certainly shouldn't assume that small programs are, by their nature, better than big ones. 
We typically compile 500,000 line programs, with some closer to 1,000,000 lines. Compile times vary from 2 to 10 minutes depending on the complexity of the code, but this isn't important since we rarely need to compile.
Our code is machine-generated from a database that contains the specifications of all our applications. These specs include such items as data elements, data structures, files, reports, screen layouts, processing rules, etc, etc.  The nucleus of the code generator consists of about 20,000 lines of hand written code, but the entire package self-generates to about 400,000 lines.
We prefer to work entirely with source code, rather than use static and dynamic libraries, as this avoids maintaining extra stuff between the design specs and the final executable file. Only about 20% of the source code is devoted to comments and white space. Anything less makes the code unreadable.
Here's a snippet from one of our Classes. The code was machine generated from the Data Dictionary database.
Code: Select all
;===============================================
;
;  File233 Class                                 Elements
;
;===============================================
;
;  strRecord233  :  Elements
;
Structure strRecord233
  Field(nElementKey, typDword)                                                           ; 14401 : element number (key)
  Field(sElementName, typString)                                                         ; 10528 : element name
  Field(cDataType, typChar)                                                              ; 12038 : element data type
  Field(nDataLength, typDword)                                                           ; 12039 : data length
  Field(nDataScale, typDword)                                                            ; 12040 : data scale
  Field(sEntityNote1, typString)                                                         ; 14182 : entity note 1
  Field(sEntityNote2, typString)                                                         ; 14183 : entity note 2
  Field(cCaseFlag, typChar)                                                              ; 13605 : edit case :  U=uppercase, L=lowercase, X=all
  Field(cCharsFlag, typChar)                                                             ; 13639 : chars:  A=alpha, N=num, H=hex, E=element, C=constant, X=all
  Field(cSignFlag, typChar)                                                              ; 13606 : edit sign : U=unsigned X=sign depends on data type
  Field(cValueFlag, typChar)                                                             ; 13640 : edit value : B=blank, P=positive N=negative, Z=zero, X=all
  Field(cNegateFlag, typChar)                                                            ; 13641 : edit negate : X=no negation N=negate the value test
  Field(cZeroSuppressFlag, typChar)                                                      ; 12075 : Y = suppress leading zeros
  Field(cCommaInsertFlag, typChar)                                                       ; 12076 : Y = insert commas in numbers
  Field(cBlankZeroFlag, typChar)                                                         ; 12098 : Y = display blanks if zero value
  Field(cSecureFlag, typChar)                                                            ; 13644 : Y = data is hidden on screen
  Field(nDefaultConstant, typDword)                                                      ; 13696 : element default:  constant
  Field(cKeyMode, typChar)                                                               ; 10508 : program mode for file key fields N = normal or none
  Field(nMessageNumber, typDword)                                                        ; 12085 : message number:  4001-5999
  Field(nEnquiryProgram, typDword)                                                       ; 10611 : element enquiry program number
  Field(nKeyFile, typDword)                                                              ; 10613 : file holding last sequ num used
  Field(nKeyElement, typDword)                                                           ; 10622 : pointer to last sequ number used
  Field(cStatusFlag, typChar)                                                            ; 11246 : entity status: E=enter, C=code, T=test, D=doc, R=release, X=obs
  Field(nDefaultFile, typDword)                                                          ; 14405 : element default:  file
  Field(nDefaultElement, typDword)                                                       ; 14406 : element default:  element
  Field(nDataWidth, typDword)                                                            ; 12041 : data width within a structure
  Field(nDataStructure, typDword)                                                        ; 14576 : element data structure
  Field(sControlPrefix, typString)                                                       ; 14810 : control prefix:  lbl, txt, fra, cmd, frm, lst, pgr, tmr
  Field(nDataClass, typDword)                                                            ; 14973 : element data class
  Field(sNotUsed064, typString)                                                          ; 10757 :
EndStructure
;
;===============================================
;
;  Interface  :  Elements
;
Interface objFile233
  Fun(Destroy, typObject) ()
  Fun(Clone,   typObject) ()
  Sub(Open)      (ByRef(bruHcb, udtIsamHcb), ByVal(bvsPackageCode, typString), ByVal(bvdDateToday, typDate), ByVal(bvnBatch, typDword))
  Sub(Close)     (ByRef(bruHcb, udtIsamHcb))
  Sub(EqualHigh) (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(LowEqual)  (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Read)      (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32))
  Sub(Next)      (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Previous)  (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Add)       (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233))
  Sub(Update)    (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233))
  Sub(Delete)    (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233))
  Sub(First)     (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Last)      (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Empty)     (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233))
  Sub(Find)      (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233), ByVal(bviIndex, typInt32), ByVal(bviPartKeyParm, typInt32))
  Sub(Write)     (ByRef(bruHcb, udtIsamHcb), ByRef(brrRecord, strRecord233))
EndInterface
;
;===============================================
;
;  Properties  :  Elements
;
Structure strFile233
  Pointer(prpVirtualTable)                                                               ; 16393 : pointer to a class virtual table
  Field(priReferenceCount, typInt32)                                                     ; 16394 : class reference count
  Field(proDvsam, objDvsam)                                                              ; 16395 : instance of the Dvsam class
EndStructure
;
;===============================================
;
;  Create  :  Elements
;
Function(clsFile233_funCreate, typObject) ()
  Local(Me, strFile233)
  Me = AllocateMemory(SizeOf(strFile233))
  If IsObject(Me)
    InitializeStructure(Me, strFile233)
    Me\prpVirtualTable   = LabelPtr(clsFile233_VirtualTable)
    Me\priReferenceCount = 1
    Me\proDvsam          = Create(clsDvsam)
  EndIf
  ProcedureReturn Me
EndFunction
;
;===============================================
;
;  Destroy  :  Elements
;
Function(clsFile233_funDestroy, typObject) (ByVal(Me, strFile233))
  If IsObject(Me)
    If Me\priReferenceCount > 1
      Me\priReferenceCount = Me\priReferenceCount - 1
    Else
      Me\proDvsam = Me\proDvsam\funDestroy()
      ClearStructure(Me, strFile233)
      FreeMemory(Me)
    EndIf
  EndIf
  ProcedureReturn 0
EndFunction
;
;===============================================
;
;  Clone  :  Elements
;
Function(clsFile233_funClone, typObject) (ByVal(Me, strFile233))
  If IsObject(Me)
    Me\priReferenceCount = Me\priReferenceCount + 1
  EndIf
  ProcedureReturn Me
EndFunction
;
;===============================================
;
;  Get                                           get record data
;
Subroutine(clsFile233_subGet) (ByVal(Me, strFile233), ByRef(brrRecord, strRecord233))
;
;  brrRecord                                     file record
;
  Ref(brrRecord)\nElementKey = Me\proDvsam\funGetDword(1, 6)
  Ref(brrRecord)\sElementName = Me\proDvsam\funGetString(7, 32)
  Ref(brrRecord)\cDataType = Me\proDvsam\funGetChar(39)
  Ref(brrRecord)\nDataLength = Me\proDvsam\funGetDword(40, 6)
  Ref(brrRecord)\nDataScale = Me\proDvsam\funGetDword(46, 1)
  Ref(brrRecord)\sEntityNote1 = Me\proDvsam\funGetString(47, 32)
  Ref(brrRecord)\sEntityNote2 = Me\proDvsam\funGetString(79, 32)
  Ref(brrRecord)\cCaseFlag = Me\proDvsam\funGetChar(111)
  Ref(brrRecord)\cCharsFlag = Me\proDvsam\funGetChar(112)
  Ref(brrRecord)\cSignFlag = Me\proDvsam\funGetChar(113)
  Ref(brrRecord)\cValueFlag = Me\proDvsam\funGetChar(114)
  Ref(brrRecord)\cNegateFlag = Me\proDvsam\funGetChar(115)
  Ref(brrRecord)\cZeroSuppressFlag = Me\proDvsam\funGetChar(116)
  Ref(brrRecord)\cCommaInsertFlag = Me\proDvsam\funGetChar(117)
  Ref(brrRecord)\cBlankZeroFlag = Me\proDvsam\funGetChar(118)
  Ref(brrRecord)\cSecureFlag = Me\proDvsam\funGetChar(119)
  Ref(brrRecord)\nDefaultConstant = Me\proDvsam\funGetDword(120, 6)
  Ref(brrRecord)\cKeyMode = Me\proDvsam\funGetChar(126)
  Ref(brrRecord)\nMessageNumber = Me\proDvsam\funGetDword(127, 6)
  Ref(brrRecord)\nEnquiryProgram = Me\proDvsam\funGetDword(133, 6)
  Ref(brrRecord)\nKeyFile = Me\proDvsam\funGetDword(139, 6)
  Ref(brrRecord)\nKeyElement = Me\proDvsam\funGetDword(145, 6)
  Ref(brrRecord)\cStatusFlag = Me\proDvsam\funGetChar(151)
  Ref(brrRecord)\nDefaultFile = Me\proDvsam\funGetDword(152, 6)
  Ref(brrRecord)\nDefaultElement = Me\proDvsam\funGetDword(158, 6)
  Ref(brrRecord)\nDataWidth = Me\proDvsam\funGetDword(164, 6)
  Ref(brrRecord)\nDataStructure = Me\proDvsam\funGetDword(170, 6)
  Ref(brrRecord)\sControlPrefix = Me\proDvsam\funGetString(176, 3)
  Ref(brrRecord)\nDataClass = Me\proDvsam\funGetDword(179, 6)
  Ref(brrRecord)\sNotUsed064 = Me\proDvsam\funGetString(185, 64)
EndSubroutine
;
;===============================================
;
;  Put                                           put record data
;
Subroutine(clsFile233_subPut) (ByVal(Me, strFile233), ByRef(brrRecord, strRecord233))
;
;  brrRecord                                     file record
;
  Me\proDvsam\subPutDword(Ref(brrRecord)\nElementKey, 1, 6)
  Me\proDvsam\subPutString(Ref(brrRecord)\sElementName, 7, 32)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cDataType, 39)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDataLength, 40, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDataScale, 46, 1)
  Me\proDvsam\subPutString(Ref(brrRecord)\sEntityNote1, 47, 32)
  Me\proDvsam\subPutString(Ref(brrRecord)\sEntityNote2, 79, 32)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cCaseFlag, 111)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cCharsFlag, 112)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cSignFlag, 113)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cValueFlag, 114)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cNegateFlag, 115)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cZeroSuppressFlag, 116)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cCommaInsertFlag, 117)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cBlankZeroFlag, 118)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cSecureFlag, 119)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDefaultConstant, 120, 6)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cKeyMode, 126)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nMessageNumber, 127, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nEnquiryProgram, 133, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nKeyFile, 139, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nKeyElement, 145, 6)
  Me\proDvsam\subPutChar(Ref(brrRecord)\cStatusFlag, 151)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDefaultFile, 152, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDefaultElement, 158, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDataWidth, 164, 6)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDataStructure, 170, 6)
  Me\proDvsam\subPutString(Ref(brrRecord)\sControlPrefix, 176, 3)
  Me\proDvsam\subPutDword(Ref(brrRecord)\nDataClass, 179, 6)
  Me\proDvsam\subPutString(Ref(brrRecord)\sNotUsed064, 185, 64)
EndSubroutine
;
;===============================================
;
;  Open                                          start file operations
;
Subroutine(clsFile233_subOpen) (ByVal(Me, strFile233), ByRef(bruHcb, udtIsamHcb), ByVal(bvsPackageCode, typString), ByVal(bvdDateToday, typDate), ByVal(bvnBatch, typDword))
;
;  bruHcb                                        14869 : isam file handle control block
;  bvsPackageCode                                10001 : package code
;  bvdDateToday                                  12312 : effective sign-on date
;  bvnBatch                                      10305 : file batch number
;
;--} local data
  Local(sPackageCode, typString)                                                         ; 10001 : package code
  Local(sUniqueName, typString)                                                          ; 11236 : unique part of dos file name
  Local(sFileExtension, typString)                                                       ; 14843 : dos file extension
  Local(sStringValue, typString)                                                         ; 14890 : generic string value
  Local(sDosFileName, typString)                                                         ; 14704 : dos file name:  xxaaaaaa.nnn
  Local(sFilePath, typString)                                                            ; 15040 : generic file path
;--} local code
  sPackageCode = "DD"
  sUniqueName = "ELEMNT"
  sFileExtension = "233"
  sDosFileName = sPackageCode + sUniqueName + #cCHAR_PERIOD + sFileExtension             ; create file name
  sFilePath = Me\proDvsam\funGetPath(sDosFileName)                                       ; create file path
  Me\proDvsam\subDefineFile(Ref(bruHcb), 233, "Elements", sFilePath, 248, 30, 2)
  Me\proDvsam\subDefineField(Ref(bruHcb), 1, #vFIELD_DWORD, 0, 6)                        ; 14401 : element number (key)
  Me\proDvsam\subDefineField(Ref(bruHcb), 2, #vFIELD_STRING, 6, 32)                      ; 10528 : element name
  Me\proDvsam\subDefineField(Ref(bruHcb), 3, #vFIELD_CHAR, 38, 1)                        ; 12038 : element data type
  Me\proDvsam\subDefineField(Ref(bruHcb), 4, #vFIELD_DWORD, 39, 6)                       ; 12039 : data length
  Me\proDvsam\subDefineField(Ref(bruHcb), 5, #vFIELD_DWORD, 45, 1)                       ; 12040 : data scale
  Me\proDvsam\subDefineField(Ref(bruHcb), 6, #vFIELD_STRING, 46, 32)                     ; 14182 : entity note 1
  Me\proDvsam\subDefineField(Ref(bruHcb), 7, #vFIELD_STRING, 78, 32)                     ; 14183 : entity note 2
  Me\proDvsam\subDefineField(Ref(bruHcb), 8, #vFIELD_CHAR, 110, 1)                       ; 13605 : edit case :  U=uppercase, L=lowercase, X=all
  Me\proDvsam\subDefineField(Ref(bruHcb), 9, #vFIELD_CHAR, 111, 1)                       ; 13639 : chars:  A=alpha, N=num, H=hex, E=element, C=constant, X=all
  Me\proDvsam\subDefineField(Ref(bruHcb), 10, #vFIELD_CHAR, 112, 1)                      ; 13606 : edit sign : U=unsigned X=sign depends on data type
  Me\proDvsam\subDefineField(Ref(bruHcb), 11, #vFIELD_CHAR, 113, 1)                      ; 13640 : edit value : B=blank, P=positive N=negative, Z=zero, X=all
  Me\proDvsam\subDefineField(Ref(bruHcb), 12, #vFIELD_CHAR, 114, 1)                      ; 13641 : edit negate : X=no negation N=negate the value test
  Me\proDvsam\subDefineField(Ref(bruHcb), 13, #vFIELD_CHAR, 115, 1)                      ; 12075 : Y = suppress leading zeros
  Me\proDvsam\subDefineField(Ref(bruHcb), 14, #vFIELD_CHAR, 116, 1)                      ; 12076 : Y = insert commas in numbers
  Me\proDvsam\subDefineField(Ref(bruHcb), 15, #vFIELD_CHAR, 117, 1)                      ; 12098 : Y = display blanks if zero value
  Me\proDvsam\subDefineField(Ref(bruHcb), 16, #vFIELD_CHAR, 118, 1)                      ; 13644 : Y = data is hidden on screen
  Me\proDvsam\subDefineField(Ref(bruHcb), 17, #vFIELD_DWORD, 119, 6)                     ; 13696 : element default:  constant
  Me\proDvsam\subDefineField(Ref(bruHcb), 18, #vFIELD_CHAR, 125, 1)                      ; 10508 : program mode for file key fields N = normal or none
  Me\proDvsam\subDefineField(Ref(bruHcb), 19, #vFIELD_DWORD, 126, 6)                     ; 12085 : message number:  4001-5999
  Me\proDvsam\subDefineField(Ref(bruHcb), 20, #vFIELD_DWORD, 132, 6)                     ; 10611 : element enquiry program number
  Me\proDvsam\subDefineField(Ref(bruHcb), 21, #vFIELD_DWORD, 138, 6)                     ; 10613 : file holding last sequ num used
  Me\proDvsam\subDefineField(Ref(bruHcb), 22, #vFIELD_DWORD, 144, 6)                     ; 10622 : pointer to last sequ number used
  Me\proDvsam\subDefineField(Ref(bruHcb), 23, #vFIELD_CHAR, 150, 1)                      ; 11246 : entity status: E=enter, C=code, T=test, D=doc, R=release, X=obs
  Me\proDvsam\subDefineField(Ref(bruHcb), 24, #vFIELD_DWORD, 151, 6)                     ; 14405 : element default:  file
  Me\proDvsam\subDefineField(Ref(bruHcb), 25, #vFIELD_DWORD, 157, 6)                     ; 14406 : element default:  element
  Me\proDvsam\subDefineField(Ref(bruHcb), 26, #vFIELD_DWORD, 163, 6)                     ; 12041 : data width within a structure
  Me\proDvsam\subDefineField(Ref(bruHcb), 27, #vFIELD_DWORD, 169, 6)                     ; 14576 : element data structure
  Me\proDvsam\subDefineField(Ref(bruHcb), 28, #vFIELD_STRING, 175, 3)                    ; 14810 : control prefix:  lbl, txt, fra, cmd, frm, lst, pgr, tmr
  Me\proDvsam\subDefineField(Ref(bruHcb), 29, #vFIELD_DWORD, 178, 6)                     ; 14973 : element data class
  Me\proDvsam\subDefineField(Ref(bruHcb), 30, #vFIELD_STRING, 184, 64)                   ; 10757 :
  Me\proDvsam\subDefineIndex(Ref(bruHcb), 1, 1, 0, 0, 0, 0, 0, 0, 0)
  Me\proDvsam\subDefineIndex(Ref(bruHcb), 2, 2, 0, 0, 0, 0, 0, 0, 0)
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 1, "N")                                     ; report flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 2, "N")                                     ; cvt flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 3, "N")                                     ; date flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 4, "N")                                     ; job flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 5, "E")                                     ; status flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 6, "C")                                     ; style flag
  Me\proDvsam\subDefineUserFlag(Ref(bruHcb), 7, "N")                                     ; package flag
  Me\proDvsam\subOpenFile(Ref(bruHcb))                                                   ; open file: 233 - Elements
EndSubroutine