home *** CD-ROM | disk | FTP | other *** search
- $title ('putils')
- $optimize(0) word16
- $large
- $debug
-
- putils: do;
- $include(/rmx386/inc/common.lit)
- $include(/rmx386/inc/rmxplm.ext)
-
- declare UINT_8 literally 'byte';
- declare UINT_16 literally 'dword';
- declare UINT_32 literally 'word';
- declare NIL_SEL literally 'selectorof(NIL)';
-
- plm_data: procedure public;
- /**********************************************************************/
- /* Demonstrates PLM data references. */
- /**********************************************************************/
-
- declare array1(12) byte data(30,31,32,33,34,35,36,37,38,39,40,41);
- declare excep word;
- declare i byte;
-
- declare CUSTOMER_TYPE literally 'structure(
- tag byte,
- name(8) byte,
- phone(7) byte,
- linkfor pointer)';
-
- declare customerlist(3) CUSTOMER_TYPE;
-
- declare customer_ptr pointer,
- customer based customer_ptr CUSTOMER_TYPE;
-
- declare oldcust_ptr pointer,
- oldcust based oldcust_ptr CUSTOMER_TYPE;
-
- declare name_init(3) pointer data(
- @('Beth ', 0),
- @('Steve ', 0),
- @('Becky ', 0));
- declare phone_init(3) structure(
- number(7) byte) data( '5551234',
- '5555678',
- '5554321' );
-
- declare struc1 structure(
- xbyte byte,
- xword word,
- xint integer,
- xdword dword,
- xptr pointer);
-
- /* Initialize STRUC1 to test variable types. */
- struc1.xbyte = '*'; /* byte */
- struc1.xword = 65535; /* word */
- struc1.xint = -32000; /* integer */
- struc1.xdword = 4000000000; /* dword */
- struc1.xptr = @array1; /* pointer */
-
- /* Initialize CUSTOMERLIST structures to test based variables. */
- customer_ptr = NIL;
- do i = 0 to 2;
- oldcust_ptr = customer_ptr;
- customer_ptr = @customerlist(i);
- call movb(name_init(i),@customer.name, 8 );
- call movb(@phone_init(i).number, @customer.phone, 7);
- if ( NIL <> oldcust_ptr ) then
- oldcust.linkfor = customer_ptr;
- do case (i);
- customer.tag = '0';
- customer.tag = '1';
- customer.tag = '2';
- end;
- end;
- end plm_data;
-
-
- delay: procedure(msecs) reentrant public;
- declare msecs word;
-
- declare i word;
- declare sleep100 word;
-
- sleep100 = msecs / 100;
-
- do i = 1 to sleep100;
- call delay_fine (10); /* delay_fine(10) delays for 100 msecs. */
- end;
-
- end delay;
-
- delay_fine: procedure(count) reentrant public;
- declare count word;
-
- declare exception word;
-
- if count <> 0 then do;
- call rqsleep (1, @exception); /* One rqsleep unit is 10 msecs. */
- call delay_fine (count - 1); /* Call self recursively. */
- end;
-
- end delay_fine;
-
- end putils;
-