You may have up to 5 DCLF statements in a CL as display files or database file.
Here is IBM documentation to support this.
The Declare File (DCLF) command declares one file (by name) to a Control Language (CL) program. Up to five DCLF commands are allowed in a CL program or ILE CL procedure. Each DCLF command specifies the name of a display file or database file, the file record formats to be used in the program, and an optional open file identifier which is used to uniquely identify the declared instance of the file within the CL program or ILE CL procedure. Multiple DCLF commands can reference the same file, so long as the value specified for the Open file identifier (OPNID) parameter is unique. Following the DCLF command for a file, the CL program or ILE CL procedure can contain data manipulation commands. For display files, the following commands can be used to send data to a workstation and receive data from a workstation: Send File (SNDF), Receive File (RCVF), Send/Receive File (SNDRCVF), End Receive (ENDRCV), and Wait (WAIT). For database files, the RCVF command can be used to read records from the file.
You can do it if you have V5R3 or later. Before V5R3, the limit is one DCLF per CL module.
Your error message indicates that you possibly have V5R3, but that you aren’t using the DCLF OPNID() parameter properly. Have you prompted DCLF to see what all of the parameters are?