As I have said before and Grr is doing also he is using a list to make the entries if you pull all the (dcl-Control-GetText Pipp/Main/ outside of the dictionary part make a list of all the 300's 98's 280's then process the list so it does not matter how many in a list.
something like
(setq lst (cons (300 "altezza soletta" (dcl-Control-GetText Pipp/Main/h)) lst))
(setq lst (cons (301 "alleggerimento" (dcl-Control-GetText Pipp/Main/tipo_alleggerimento)) lst))
(setq lst (cons (302 "copriferro inf" (dcl-Control-GetText Pipp/Main/c)) lst))