RosettaCodeData/Task/Generic-swap/Action-/generic-swap.action
2023-07-01 13:44:08 -04:00

42 lines
883 B
Text

INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
PROC Swap(BYTE POINTER ptr1,ptr2 INT size)
BYTE tmp
INT i
FOR i=0 TO size-1
DO
tmp=ptr1^ ptr1^=ptr2^ ptr2^=tmp
ptr1==+1 ptr2==+1
OD
RETURN
PROC Main()
BYTE b1=[13],b2=[56]
INT i1=[65234],i2=[534]
REAL r1,r2
CHAR ARRAY s1="abcde",s2="XYZ"
Put(125) PutE() ;clear the screen
ValR("32.5",r1) ValR("-0.63",r2)
Print("Swap bytes: ")
PrintB(b1) Put(32) PrintB(b2) Print(" -> ")
Swap(@b1,@b2,1)
PrintB(b1) Put(32) PrintBE(b2)
Print("Swap integers: ")
PrintI(i1) Put(32) PrintI(i2) Print(" -> ")
Swap(@i1,@i2,2)
PrintI(i1) Put(32) PrintIE(i2)
Print("Swap floats: ")
PrintR(r1) Put(32) PrintR(r2) Print(" -> ")
Swap(r1,r2,6)
PrintR(r1) Put(32) PrintRE(r2)
Print("Swap strings: ")
Print(s1) Put(32) Print(s2) Print(" -> ")
Swap(@s1,@s2,2)
Print(s1) Put(32) PrintE(s2)
RETURN