There is a good example (“draw_square”) in the manual “Introduction to RAPID”, see below:

Please also check my example code for a IRB140 below :
MODULE Module1
CONST robtarget pHome:=[[506.291651245987,1.29490239543512E-12,679.5],[0.499999999999998,0,0.866025403784439,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget pCenter:=[[554.479956268792,1.73273580794849E-12,533.699988807741],[4.22133561439608E-09,0,1,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget pStart:=[[554.479955451763,-200.00000706809,533.699989666025],[1.44838108079029E-08,7.56676097447419E-17,1,-5.22428873538805E-09],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PROC Path_10()
MoveJ pHome,v1000,z100,tool0WObj:=wobj0;
MoveJ pStart,v1000,fine,tool0WObj:=wobj0;
MoveSin pStart,v1000,z0,tool0,wb:=wobj0;
ENDPROC
!*********************************************************
! Procedure: MoveSin
! Description:
! The robot moves along a sine wave
!
!*********************************************************
PROC MoveSin(
robtarget StPoint,
speeddata sp,
zonedata zn,
PERS tooldata tl
PERS wobjdata wb)
VAR robtarget pTmp;
CONST num n:=100; !steps
CONST num h:=360/n;
VAR num offset_x:=0;
VAR num offset_y:=0;
CONST num amplitude := 100; !mm
CONST num wavelength := 400; !mm
ConfL Off;
FOR i FROM 0 TO n DO
offset_x := amplitude * Sin(i * h);
offset_y := wavelength * i / n;
pTmp:=Offs(StPoint,offset_x,offset_y,0);
MoveL pTmp,sp,zn,tl,Wobj:=wb;
ENDFOR
ENDPROC
PROC main()
Path_10;
ENDPROC
ENDMODULE
If want to use this instruction from RS you can add it using the “Instruction Template Manager”