来读读30年前的程序,看是什么意思呢?
xsobi 2024-11-24 00:33 2 浏览
三十年前编写MIS中的一段程序,把前端设备中的数据收集上来,然后汇总传给后台Oracle,同时把后台变动数据从Oracle提出传进前端设备。当时前端还不是PC,需要通过串口通讯。
#include <stdlib.h>
#include <stdio.h>
#include <process.h>
#include <string.h>
#include <dos.h>
EXEC SQL BEGIN DECLARE SECTION; /* SQL变量定义*/
VARCHAR uid[80]; /* 用户名 */
VARCHAR pwd[20]; /* 口令 */
VARCHAR date[9];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA; /* SQL通讯区 */
char input_file_name[20],line_buffer[80];
short int ma19busy()
{
FILE *par_file;
int i;
char ch[17];
EXEC SQL BEGIN DECLARE SECTION; /* SQL变量定义*/
VARCHAR ecrno[2];
EXEC SQL END DECLARE SECTION;
EXEC SQL WHENEVER SQLERROR GOTO err;
EXEC SQL DECLARE cu CURSOR
FOR SELECT ecrno
FROM tci_ecr
WHERE ztbz='*';
EXEC SQL OPEN cu;
EXEC SQL WHENEVER NOT FOUND GOTO EXITloop;
strcpy(ch,"");
while(1)
{
EXEC SQL FETCH cu INTO :ecrno;
ecrno.arr[ecrno.len]='\0';
i=atoi(ecrno.arr);
itoa(i,ecrno.arr,10);
strcat(ch,ecrno.arr);
strcat(ch,",");
}
EXITloop:
EXEC SQL CLOSE cu;
par_file=fopen("para0410.dat","w");
fputs("#BEGIN\n",par_file);
fputs("#COMMAND = 0410\n",par_file);
fputs("#TERMINAL_ID = ",par_file);
ch[strlen(ch)-1]='\0';
fputs(ch,par_file);
fputs("\n",par_file);
fputs("#OUTPUT_FILE=ADD_U.DAT,MAIN_U.DAT,LINK_U\n",par_file);
fputs("#LOG_FILE=LOGFILE.DAT\n",par_file);
fputs("#DISP_LINE = 25\n",par_file);
fputs("#APL_RETRY = 100\n",par_file);
fputs("#END\n",par_file);
fclose(par_file);
puts(" \n");
goto end;
err:
puts("ma19busy() function");
printf("%.70s\n",sqlca.sqlerrm.sqlerrmc);
end:
return(i);
}
short plu_zt()
{
char PL[3];
int i,k;
long l;
char c[14];
EXEC SQL BEGIN DECLARE SECTION; /* SQL变量定义*/
VARCHAR spbm[14],spmc[21],gzbm[3],plums[17],pluno[14],ljplu[14],xglx[2];
float lsdj;
EXEC SQL END DECLARE SECTION;
l=atol(line_buffer);
ltoa(l,pluno.arr,10);
k=strlen(pluno.arr);
strcpy(c,"");
for(i=1;i<=13-k;i++) strcat(c,"0");
strcat(c,pluno.arr);
strcpy(pluno.arr,c);
pluno.len=strlen(pluno.arr);
for(i=15;i<=30;i++)
plums.arr[i-15]=line_buffer[i];
plums.arr[16]='\0';
plums.len=strlen(plums.arr);
switch (line_buffer[35])
{
case 'A':i=10*16;break;
case 'B':i=11*16;break;
case 'C':i=12*16;break;
case 'D':i=13*16;break;
case 'E':i=14*16;break;
case 'F':i=15*16;break;
default :PL[0]=line_buffer[35];PL[1]='\0';i=atoi(PL)*16;
}
switch (line_buffer[36])
{
case 'A':i+=10;break;
case 'B':i+=11;break;
case 'C':i+=12;break;
case 'D':i+=13;break;
case 'E':i+=14;break;
case 'F':i+=15;break;
default :PL[0]=line_buffer[36];PL[1]='\0';i+=atoi(PL);
}
itoa(i,ljplu.arr,10);
ljplu.len=strlen(ljplu.arr);
if(line_buffer[41]=='4') strcpy(xglx.arr,"2");
else if(line_buffer[42]=='2') strcpy(xglx.arr,"1");
else strcpy(xglx.arr,"0");
xglx.len=strlen(xglx.arr);
lsdj=atof(line_buffer+44)/100;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL WHENEVER NOT FOUND CONTINUE;
strcpy(spbm.arr,"");
spbm.len=strlen(spbm.arr);
strcpy(spmc.arr,"");
spmc.len=strlen(spmc.arr);
strcpy(gzbm.arr,"");
gzbm.len=strlen(gzbm.arr);
EXEC SQL SELECT spbm,spmc,gzbm INTO :spbm,:spmc,:gzbm
FROM tci_plub WHERE pluno=:pluno AND xglx=:xglx;
spbm.arr[spbm.len]='\0';
spmc.arr[spmc.len]='\0';
gzbm.arr[gzbm.len]='\0';
EXEC SQL INSERT INTO tci_ztb(spbm,spmc,gzbm,pluno,lsdj,ljplu,xglx,plums,rq)
VALUES(:spbm,:spmc,:gzbm,:pluno,:lsdj,:ljplu,:xglx,:plums,:date);
goto end;
err:
printf("%.70s\n",sqlca.sqlerrm.sqlerrmc);
end:
return(0);
}
void main(int argc,char *argv[])
{
short int i;
char *cc;
struct dosdate_t rq;
FILE *input_file;
if(argc!=3)
{
puts("usage: in_ora user_name password ");
exit(1);
}
strcpy(uid.arr,argv[1]);
uid.len = strlen(uid.arr);
strcpy(pwd.arr,argv[2]);
pwd.len = strlen(pwd.arr);
EXEC SQL WHENEVER SQLERROR GOTO errexit; /* 出错检测 */
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd; /* ORACLE登录 */
i=ma19busy();
if(i) exit;
i=spawnl(P_WAIT,"ma19drv.exe","ma19drv.exe","para0410.dat",NULL);
if(i==147)
i=spawnl(P_WAIT,"ma19drv.exe","ma19drv.exe","para0410.dat",NULL);
if(i==129)
{
puts("参数文件没有找到!");
exit;
}
else if(i==147)
{
puts("发送错!");
exit;
}
puts("发送完成! \n");
strcpy(input_file_name,"MAIN_U.DAT");
input_file=fopen(input_file_name,"r");
if(!input_file)
{
puts("没有数据文件!!"); exit(1);
}
puts("请等待...");
EXEC SQL WHENEVER NOT FOUND CONTINUE;
EXEC SQL DELETE FROM tci_ztb;
_dos_getdate(&rq);
itoa(rq.year,date.arr,10);
itoa(rq.month,cc,10);
strcat(date.arr,cc);
itoa(rq.day,cc,10);
strcat(date.arr,cc);
date.len=strlen(date.arr);
while( fgets(line_buffer,80,input_file)!=NULL ) /* 读一行 */
{
plu_zt();
fgets(line_buffer,80,input_file);
}
EXEC SQL COMMIT WORK RELEASE; /* 提交并释放资源 */
puts("OK");
exit(0);
errexit:
puts("ORACLE DATEBASE ERROR");
printf("%.70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL WHENEVER SQLERROR STOP; /* 出错检测 */
EXEC SQL ROLLBACK WORK RELEASE; /* 放弃并释放资源 */
exit(1);
}
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)