@skew is correct: I have very tetchy opinions on the best way to store data, but they are experienced best practices and “whatever works for you” is always the best way to get something done, if not always done best.
You will also need a second delimiter to go between records, for which I suggest ^.
This means you will also have to scrub user input to either edit out pipe and carrot, or do the aJobs thing of replacing those characters with ::pipe:: or ::carrot:: on input and display properly on output. (Putting user text last makes pipe less critical, but your record delimiter must be accounted for.)
If you’re going for a rolling attribute list (a decent idea), I would check strlen() of the attribute before appending to it to determine if you need to make a new attribute, not do a record count. You don’t know how long the user entered text will be, or if you alter the system later on.
If you’re using Rhost, you should even be able to get a check on the actual size instead of number of characters. Ansi and extended characters take up more space than the traditional English ascii set.
Otherwise, I’ll support Skew’s advice 100%.