People code is a language like other languages with  it’s own DataTypes , Statements.
Every People Code program is associated with an Application
Designer component and with an event.
Peoplecode Locations: Record Fields ,  Menus , 
Components  Pages ,  Business Components , Application Messages
,  Application Engine.
Data Types     
NUMBER,STRING,DATE,TIME,DATETIME,ANY
Scope :
                Local
Variables
                Global
Variables
                Component
Variables
Other Variables :
                System
Variables
                Derived/Work
Fields
Syntax for declaration:
   <scope>
<type> &<variable_name>
Local Variables :
Temporary memory location that holds the value.
Global Variables :
 Exist for the
complete session and are used to transfer values between panel groups.
Session means signin to signout is called session
Component Variables :
Exist for the duration of the current PS component.
Used to transfer values between programs on the same
component
System Variables :
Internally maintained 
and can be referred by the people code any time.
Begins with %.
     Ex : %Date ,%Time
,%Page ,%Menu,%Component,%DBName,%Mode etc...
Derived/Work Fields :
Used when we need to pass values from one program  to another 
without the  field values being
stored in the    database.
Existence limited to the current component.
They are usually display only fields on a page  or have them as invisible fields on the page
User Defined Variables:
Variables which are defined by developers starts with &.
Operators:
Mathematical  :  + ,- ,* ,/ ,** , |
Comparison : = ,!= ,<> ,>= ,<= ,< ,>
Logical       :  NOT ,AND ,OR
Functions:
User defined functions
Built-in Functions
User defined function:
Internal Peoplecode
Functions that are called directly from the same program
where the function was defined without the declare function statement.
External PeopleCode
Stored as Function Libraries( derived/work records named
with prefix “FUNCLIB_”
convention is define these functions in the FieldFormula
Event.
Syntax for defining or writing a function 
Function <function_name>
(<param1,<param2>....)
           stmt1;
           stmt2; 
           return
<expression>;
End-Function;
Syntax for Declaring a Function 
Declare Function <function_name> PeopleCode   <Record_name.FieldName>.FieldFormula.
Built-in Functions:
Component Buffer
Used to modify,update,hide fields in the buffer area.
ActiveRowCount,AddKeyListItem,CompareLikeFields,ClearKeyList,
ComponentChanged,CopyFields,CopyRow,CurrentLevelNumber.
Conversion 
Char,Code,Codeb,ConvertChar,String,Value
Current Date and Time 
%CurrentDateIn,%CurrentDateOut,%CurrentDateTimeIn,
%CurrentDateTimeOut,%CurrentTimeIn,%CurrentTimeOut
Database and platform 
%DbName,%DbType 
Data Buffer Access 
CreateRecord,CreateRowset,FlushBulkInserts ,GetField,GetLevel0 ,
GetRecord ,GetRow,GetRowset 
Date and Time 
Used to calculate and manipulate dates
AddToDate,AddToDateTime,AddToTime, Date,DateValue
Day,Days,Days360,Days365
String  Functions
Used to manipulate character Strings. 
Number Functions
Used to manipulate numeric values
Security Functions
Used for security purpose.
Data Buffer access Classes
Field ,Record ,Row ,Rowset 
Field Class
       Attributes             : Name,Enabled,Type
       Methods              : 
GetLongLabel,SearchClear,SetCursorPos
       Built-In
Functions: GetField.
Record Class
       Attributes            : Name ,IsChanged ,FieldCount                                          
       Methods             : 
CompareFields,CopyChangedFieldsTo,CopyFieldsTo 
       Built-In
Functions: GetRecord 
Row Class
       Attributes               : Visible ,IsChanged 
       Methods                : CopyTo ,GetNexteffRow.
       Built-in
Functions  : GetRow 
RowSet Class
       Attributes               : ActiveRowCount 
       Methods                : CopyTo ,DeleteRow ,Fill
       Built-in
Functions  :
CreateRowSet,GetLevel0,GetRowSet
Statements in PeopleCode
Branching Statements
if Statement:  
   syntax:  if <condition>
                        stmt1;                                                        
                             else 
                       stmt2;
                            end-if;  
Evaluate Statement
Evaluate <field or variable>
when = <value1>
                stmt1; break;
when = <value2> 
                stmt2;
break;
when-other
                stmt3;break;
End-Evaluate;
For Loop
  For
<&variable> = <start-value> to <end-value>                             
                        [Step stepvalue>]
                                   stmt1; 
stmt2;
                            End-for;