proc main integer iMemID = 0 ;Memory ID integer iVar1, iVar2 ;Integer variables in data structure long lVar1, lVar2 ;Long variables in data structure string sVar1, sVar2 ;String variables in data structure float fVar1, fVar2 ;Float variables in data structure integer iMemSize ;Holds total size required for data structure integer iMemIndex = 0 ;Index into data structure integer iEvent ;Used for dialogbox events string Var1, Var2, Var3, Var4, Var5, Var6 ;Temporary variables used in dialogbox iMemSize = sizeof(iVar1)*2 + sizeof(lVar1)*2 + sizeof(fVar1)*2 + 256 + 256 ;Compute size of necessary memory block, strings can be up to 256 bytes in length if memalloc iMemID iMemSize ;If memory allocated successfully memset iMemID 0 0 iMemSize ;Zero memory dialogbox 0 8 19 216 161 130 "Enter values" editbox 1 48 16 48 13 Var1 editbox 2 48 48 48 13 Var2 editbox 3 48 75 48 13 Var3 editbox 4 48 107 48 13 Var4 editbox 5 149 16 48 13 Var5 editbox 6 149 48 48 13 Var6 editbox 7 149 74 48 13 sVar1 editbox 8 149 107 48 13 sVar2 text 9 10 18 30 11 "Integer 1" left text 10 10 50 30 11 "Integer 2" left text 11 10 77 30 11 "Long 1" left text 12 10 109 30 11 "Long 2" left text 13 106 18 30 11 "Float 1" left text 14 106 50 30 11 "Float 2" left text 15 106 77 30 11 "String 1" left text 16 106 109 30 11 "String 2" left pushbutton 32 80 136 56 16 "OK" OK enddialog while 1 dlgevent 0 iEvent switch iEvent case 32 ;OK button pressed exitwhile endcase endswitch endwhile atoi Var1 iVar1 ;Convert string to integer atoi Var2 iVar2 ;Convert string to integer atol Var3 lVar1 ;Convert string to long atol Var4 lVar2 ;Convert string to long atof Var5 fVar1 ;Convert string to float atof Var6 fVar2 ;Convert string to float else errormsg "Failed to allocate memory!" ;Display error message exit endif memwrite iMemID iMemIndex iVar1 ;Write first integer to memory iMemIndex = iMemIndex + sizeof(iVar1) ;Increment iMemIndex memwrite iMemID iMemIndex iVar2 ;Write second integer to memory iMemIndex = iMemIndex + sizeof(iVar2) ;Increment iMemIndex memwrite iMemID iMemIndex lVar1 ;Write first long to memory iMemIndex = iMemIndex + sizeof(lVar1) ;Increment iMemIndex memwrite iMemID iMemIndex lVar2 ;Write second long to memory iMemIndex = iMemIndex + sizeof(lVar2) ;Increment iMemIndex memwrite iMemID iMemIndex fVar1 ;Write first float to memory iMemIndex = iMemIndex + sizeof(fVar1) ;Increment iMemIndex memwrite iMemID iMemIndex fVar2 ;Write second float to memory iMemIndex = iMemIndex + sizeof(fVar2) ;Increment iMemIndex memwrite iMemID iMemIndex sVar1 256 ;Write first string to memory iMemIndex = iMemIndex + 256 ;Increment iMemIndex memwrite iMemID iMemIndex sVar2 256 ;Write second string to memory iVar1 = 0 ;Set all variables to zero iVar2 = 0 ;Before retrieving from memory lVar1 = 0 lVar2 = 0 fVar1 = 0 fVar2 = 0 sVar1 = "" sVar2 = "" iMemIndex = 0 ;Reset index to beginning of memory block memread iMemID iMemIndex iVar1 ;Read first integer from memory iMemIndex = iMemIndex + sizeof(iVar1) ;Increment iMemIndex memread iMemID iMemIndex iVar2 ;Read second integer from memory iMemIndex = iMemIndex + sizeof(iVar2) ;Increment iMemIndex memread iMemID iMemIndex lVar1 ;Read first long from memory iMemIndex = iMemIndex + sizeof(lVar1) ;Increment iMemIndex memread iMemID iMemIndex lVar2 ;Read second long from memory iMemIndex = iMemIndex + sizeof(lVar2) ;Increment iMemIndex memread iMemID iMemIndex fVar1 ;Read first float from memory iMemIndex = iMemIndex + sizeof(fVar1) ;Increment iMemIndex memread iMemID iMemIndex fVar2 ;Read second float from memory iMemIndex = iMemIndex + sizeof(fVar2) ;Increment iMemIndex memread iMemID iMemIndex sVar1 256 ;Read first string from memory iMemIndex = iMemIndex + 256 ;Increment iMemIndex memread iMemID iMemIndex sVar2 256 ;Read second string from memory usermsg "First integer = %d, second integer = %d" iVar1 iVar2 usermsg "First long = %ld, second long = %ld" lVar1 lVar2 usermsg "First float = %f, second float = %f" fVar1 fVar2 usermsg "First string = %s, second string = %s" sVar1, sVar2 memfree iMemID ;Free memory endproc