This is what I get when I read Ed's script:
meteo@poniente:/datos$ cat awk.script
#!/bin/bash
cat tst.awk
awk { dates2vals[$1] = $2 }
END {
    begDate = "01/01/1945"
    endDate = "31/12/2000"
    begSecs = mktime(gensub("(.*)/(.*)/(.*)","\\3 \\2 \\1 12 00 00",1,begDate))
    daySecs = 24 * 60 * 60
    for (curSecs=begSecs; curDate!=endDate; curSecs+=daySecs) {
        curDate = strftime("%d/%m/%Y",curSecs)
        print curDate, (curDate in dates2vals ? dates2vals[curDate] : "-99.0")
    }
}
And this is what I get when I run Ed's script:
meteo@poniente:/datos$ ./tst.awk
01/01/1946   3.0
02/01/1946  14.2
...
14/11/2021   0.0
15/11/2021   0.0
16/11/2021   0.0
17/11/2021   0.0
18/11/2021   0.0
19/11/2021   0.0
20/11/2021   0.0
21/11/2021   0.0
22/11/2021  54.1
23/11/2021 -99.0
24/11/2021  27.4
25/11/2021   0.0
29/11/2021   0.0
30/11/2021   0.0
awk: line ord.:1: {
awk: line ord.:1:  ^ unexpected newline or end of string
./awk.script: line 4: END: command not found
./awk.script: line 5: begDate: command not found
./awk.script: line 6: endDate: command not found
./awk.script: line 7: syntax error near unexpected element `('
./awk.script: line 7: `    begSecs = mktime(gensub("(.*)/(.*)/(.*)","\\3 \\2 \\1 12 00 00",1,begDate))'
meteo@poniente:/datos$
 
                