## Samples from the Getting Started section (oclpg01)

```/***************************************************************/
/*                                                             */
/*          S A S   S A M P L E   L I B R A R Y                */
/*                                                             */
/*    NAME: oclpgs00                                           */
/*   TITLE: Samples from the Getting Started section (oclpg01) */
/* PRODUCT: OR                                                 */
/*  SYSTEM: ALL                                                */
/*    KEYS: OR                                                 */
/*   PROCS: OPTMODEL                                           */
/*    DATA:                                                    */
/*                                                             */
/* SUPPORT:                          UPDATE:                   */
/*     REF: Examples from the Getting Started section of the   */
/*          CLP solver documentation.                          */
/*    MISC:                                                    */
/*                                                             */
/***************************************************************/

/*  Send More Money  */

proc optmodel;
/* Declare all variables as integer. */
var S integer, E integer, N integer, D integer, M integer, O integer,
R integer, Y integer;
/* Set all domains to between 0 and 9. Domains are unbounded by default.
Always declare domains to be as tight as possible. */
for {j in 1.._NVAR_} do;
_VAR_[j].lb = 0;
_VAR_[j].ub = 9;
end;
/* Describe the arithmetic constraint.*/
con Arithmetic:           1000*S + 100*E + 10*N + D
+           1000*M + 100*O + 10*R + E
= 10000*M + 1000*O + 100*N + 10*E + Y;
/* Forbid leading letters from taking the value zero.
Constraint names are optional. */
con S ne 0;
con M ne 0;
/* Require all variables to take distinct values. */
con alldiff(S E N D M O R Y);

solve;
print S E N D M O R Y;
quit;

/*  Eight Queens  */

proc optmodel;
num n init 8;
var A {1..n}        >= 1     <= n     integer;
/* Define artificial offset variables. */
var B {1..n, -1..1} >= 1 - n <= n + n integer;
con Bdef {i in 1..n, k in -1..1}:
B[i,k] = A[i] + k * i;

con OffsetsMustBeAlldifferent {k in -1..1}:
alldiff({i in 1..n} B[i,k]);
solve with CLP / varselect=fifo;
/* Replicate typical PROC CLP output from an OPTMODEL array */
create data out from {i in 1..n}<col('A'||i)=A[i]>;
quit;

```