I was playing around with ChatGPT last night. Model 4 writes Clarion code. I have not compiled the code to see that it functions. However, I thought it was remarkable that it can take some basic parameters and write out a function and, upon subsequent request, create a window structure that calls the function. And, in the conversation, tells you what it’s doing.
PROGRAM
INCLUDE('windows.inc')
TriangleWindow WINDOW('Triangle Solver'), AT(,,350,200), CENTER, FONT('Segoe UI', 10), GRAY
PROMPT('Side A:', , , , , , , , , )
ENTRY(@n10.2), AT(80,20), USE(?SideA)
PROMPT('Side B:', , , , , , , , , )
ENTRY(@n10.2), AT(80,50), USE(?SideB)
PROMPT('Side C:', , , , , , , , , )
ENTRY(@n10.2), AT(80,80), USE(?SideC)
BUTTON('Solve'), AT(210,20,80,25), USE(?Solve)
BUTTON('Exit'), AT(210,50,80,25), USE(?Exit)
TEXT('Result:'), AT(20, 130, 40, 12)
ENTRY(@s40), AT(60,130,200,20), USE(?Result)
END
TriangleSolve PROCEDURE(REAL a, REAL b, REAL c)
REAL missingSide
CODE
IF a = 0
missingSide = SQRT(c * c - b * b)
ELSIF b = 0
missingSide = SQRT(c * c - a * a)
ELSIF c = 0
missingSide = SQRT(a * a + b * b)
ELSE
missingSide = 0
END
RETURN missingSide
CODE
OPEN(TriangleWindow)
ACCEPT
CASE FIELD()
OF ?Solve
REAL a, b, c, result
a = ?SideA{PROP:Text}
b = ?SideB{PROP:Text}
c = ?SideC{PROP:Text}
result = TriangleSolve(a, b, c)
?Result{PROP:Text} = FORMAT(result, '###.00')
OF ?Exit
BREAK
END
END