ains the Pid of the last instance created. Those four variables identify each process instance; this is necessary, for example, to output a signal to a particular process instance. 2.1.4 Procedure Figure 2.6 shows a process containing the definition of procedure sendFrame, and a call to this procedure. The procedure sendFrame is called in a procedure call symbol, passing the three parameters corresponding to the formal parameters declared in the procedure header. 2.2 COMMUNICATION In SDL, the state machines communicate together or with the environment by transmitting and receiving signals (or remote variables or procedures) through channels and signal routes. 2.2.1 Signals First, a signal must be declared. Figure 2.7 provides examples of signal declarations. A signal may carry one or more parameters. In our example, only L_ReleaseInd carries a parameter, of type releaseCause. 12 Validation of Communications Systems with SDL process DLC procedure sendFrame connected uData Integer, uDat Integer, /* user data */ Iparam IparamTyp; C Integer, /* CRC */ IN/OUT buffer IparamTyp buffer := L_DataReg fill_lparam(uDat, 15) (uData) sendFrame I (buffer) sendFrame VIA dlcDL (uData, 15, Iparam) Figure 2.6 Example of procedure system syst1 L_Establnd, (dlc2su) L_EstabConf, DLCbSU2 L_Releaselnd DLCaSU L_EstabReq, DLCbSU [(su2dlc)] L_EstabResp, L_ReleaseReq [(V76frames) SABME, DM, DLCbDL. DISC, UA DLCaDL SABME, DM, (V76frames) DISC, UA block3 SIGNAL /* DLC to Service User: */ SIGNALLIST V76frames= L_EstabReq, SIGNALLIST dlc2su= SABME, L_Establnd, L_Establnd, L_EstabResp, L_EstabConf, DISC, L_EstabConf, L_ReleaseInd; L_ReleaseReq, L_Releaselnd(releaseCause): /* Service User to DLC: */ NEWTYPEreleaseCause SIGNALLIST su2dlc= LITERALS normal, congestion; SIGNAL L_EstabReq, ENDNEWTYPE; SABME, L_EstabResp, L_ReleaseReq; DISC, Figure 2.7 Communication at system level Once declared, a signal can be inserted into the "wires" (channels and routes). The signal name can be directly inserted into the [ ] symbols of the channel or signal route,