Below is an extract from a dataset i use to convert to a format library. I have another data set which calls the format library later on in the code. Basically, the other data set contans details of the vehicle age of the policy and I use the put (vehicle age, format name) function to find the label that corresponds to the vehicle age. So if the vehcile age is 1 and the product is AAA, the put function returns a value the letter A. . TableName Product Start End Label DRVAGE AAA 0 2 A DRVAGE AAA 2 6 B DRVAGE AAA 6 10 C DRVAGE BBB 0 2 A DRVAGE BBB 2 6 B DRVAGE BBB 6 10 C ... ... ... ... ... Since the label depends both on the table name and the product I convert the above table into the table below and create a format library based on this table: FMTNAME Start End LABEL DRVAGEAAA 0 2 A DRVAGEAAA 2 6 B DRVAGEAAA 6 10 C DRVAGEBBB 0 2 A DRVAGEBBB 2 6 B DRVAGEBBB 6 10 C usin the code... Data dataset1; set dataset; fmtname = tablename||product; keep fmtname start end label; run; proc format cntlin = dataset1; fmtlib; run; This works fine so I have my format library. The problem is where I want to execute the put statement so that my dataset with the policy info pulls in the label from this table. If there was only one product, say AAA, then the code; data policydata1; set policy data; vehiclageband = put(vehicleage, drvageaaa.); run; works fine. However, there are many products and I want the code to be able to be dynamic with regard to the product. The product field in the policy dataset is called 'product' so I want the code to be dynamic, I tried: data policydata1; set policy data; vehicleageband = put(vehicleage, "drvage"||product.) run; But this returns errors. Does anyone have a way around this? I've been searching the internet for ages.
... View more