DDE сервер и XlTable формат в QUIK

3 мая, 2010

Автор: Николай Камынин
   Передача информации из таблиц QUIK во внешние приложения осуществляется по протоколу DDE в формате данных XlTable.
Microsoft Windows предлагает несколько способов для передачи данных между приложениями.  Один из способов передачи данных является использование Windows динамического обмена данными (DDE). 
   В QUIK используется передача данных в  DDE форматах Microsoft Excel версии 5.0 и более поздних.

                                     Fast Table формат (XlTable)
fast table формат, XlTable, обеспечивает максимальную скорость передачи данных по протоколу DDE Microsoft Excel.
XlTable состоит из блоков данных содержащих данные об обновляемых ячейках таблиц.
 Каждый блок данных состоит из трех частей:
WORD tdt  /* тип данных */
WORD cb   /* размер блока в байтах */
BYTE data[cb]    /* данные */

    Возможные типы блоков описаны в следующей таблице

Тип блока Значение Описание  
tdtTable 16 Размер таблицы. Данные (4 байта,cb=4) содержат 2 слова.Первое слово – число строк, второе слово – число столбцов.  
tdtFloat 1 Число с плавающей точкой IEEE-формат. Размер числа 8 байт на ячейку.  
tdtString 2 Строка в st(байт-счетчик) формате. Первый байт содержит длину строки(cch). Строка не завершается нулем.  
tdtBool 3 Логические значения 1 = TRUE  0 = FALSEДлина данных два байта на ячейку  
TdtError 4 Error : 0 = #NULL!
7 = #DIV/0!
15 = #VALUE!
23 = #REF!
29 = #NAME?
36 = #NUM!
42 = #N/AЗначение ошибки. Длина 2 байта на ячейку
 
TdtBlank 5 Счетчик числа последовательных неопределенных (пустых) ячеек. Данные(2 байта,cb=2) содержат число пустых ячеек.
TdtInt 6 Беззнаковое целое. Длина данных 2 байта на ячейку. Microsoft Excel может читать число в этом формате, но никогда не пишет числа в этом формате.
TdtSkip 7 Число пропущенных ячеек. Пропущенные ячейки сохраняют свои предыдущие значения. В других словах,пропущенные ячейки не изменяются  WM_DDE_DATA сообщением. Вы можите использовать tdtSkip для увеличения DDE производительности в Выших приложениях изменяя только одну или две ячейки в середине большой таблицы. Microsoft Excel не поддерживает tdtSkip кода новая ячейка является частью WM_DDE_POKE сообщения. Длина данных 2 байта (cb=2).

        Первый дата блок всегда типа tdtTable, который определяет число строк и число столбцов в таблице. Все следующие за tdtTable дата блоки представляют ячейки таблицы.

  Microsoft Excel отдает ссылку на ячейку в таблице (например,R1C1:R2C4) как iterm часть DDE сообщения.
   Передача данных производится построчно. Сначала все ячейки первой строки в таблице , затем все ячейки второй строки и так далее. Минимальные затраты времени на передачу данных обеспечивается  передачей одного tdt для множества ячеек,  передаваемых вместе в одном боке данных, даже если ячейки из разных строк, но одного типа.
         Для передачи данных из QUIK во внешние приложения используется лишь два формата  tdtFloat и tdtString.
          Алгоритм взаимодействия приложения с QUIK в общем виде выглядит следующим образов:
1) зарегистрировать сервис с указанием программы обратного вызова
 2) принять блок данных , передаваемый Windows
 3) определить имя обновляемой таблицы
 4) принять R1C1: R2C2 —  области таблицы
 5) Преобразовать данные из блока согласно принимаемым tdt форматам (  tdtFloat и tdtString).
 6) Поместить данные в таблицы приложения

изучить построение DDE сервера можно по ссылке 
http://frolov-lib.ru/books/bsp/v17/ch3.htm
  в книге:   Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

 Александр Фролов, Григорий Фролов   Том 17, М.: Диалог-МИФИ, 1994, 287 стр.

Сказка о низкой производительности труда и высокой зарплате

21 апреля, 2010

Автор: Николай Камынин

Нет ничего более живучего, чем абсурдные, но очевидные мифы.
   Считаю, что один из таких мифов — миф о низкой производительности труда в российской промышленности.
          Я не рассматриваю производительность в посреднической деятельности, такой как банковская, риэлторская, ритейлерская или чиновническая.
     Я говорю о производительности труда в сфере материального производства.
       Международная организация труда (МОТ) в сентябре 2007 г. опубликовала отчет «Ключевые показатели рынка труда». Согласно отчету, первое место в мире по производительности труда занимают США .
        В 2006 г. вклад среднестатистического американца в ВВП составил $63885. За США следует Ирландия ($55986), Люксембург ($55641), Бельгия ($55235) и Франция ($54609).
            Производительность труда в России почти в четыре раза ниже, чем в США.  В 2005 г. вклад каждого россиянина в ВВП составил $15563(В цитируемом Отчете МОТ показатели производительности труда по большинству стран представлены за 2005 г. По пятерке лидеров  — за 2006 г.) В СНГ Россия заняла четвертое место по производительности труда, позади Армении ($22763), Беларуси ($21527) и Казахстана ($18688).
            В одном из аналитических отчетов читаю следующие страшилки:
     “  Из-за высокой конкуренции с более качественными и дешевыми иностранными товарами, отечественные производители оказались на пределе рентабельности и перед угрозой закрытия многих обрабатывающих производств.
      Так, в 2006 г. рентабельность продукции в сфере добычи полезных ископаемых в среднем находилась на уровне 26—27% ( еще в 2005 г. она составляла 34,7%), в отраслях машиностроения рентабельность ниже 9%, в пищевой промышленности – около 10%, в текстильной и швейной — менее 5%.
               Производительность труда находится в прямой зависимости от численности и структуры экономически активного населения страны. Население России стремительно сокращается и стареет. По прогнозу ООН, к 2025 г. численность населения РФ сократиться до 131 млн. человек. К этому времени доля жителей страны старше 65 лет составит, по различным оценкам, 18-20% от общей численности (каждый пятый россиянин).
         Есть и еще более тревожные симптомы – темпы прироста производительности труда, которые в 2006 г. по сравнению с 2005 г. снизились: 5,8%против 6,5%. При этом темпы прироста заработной платы, напротив, выросли почти в 1,5 раза. …” конец цитаты.
            При этом постоянно путают два понятия —  “нехватка рабочих рук” и “нехватка квалифицированных кадров”.
            На расширенном заседании Госсовета еще 08.02.2008 г. В. Путин заявил о необходимости достижения 4-x кратного роста производительности труда к 2020 г. в основных секторах экономики.
            Таким образом, поставлена задача в духе Н.С.Хрущева – “Догнать и перегнать Америку”, но пока лишь в первой части и лишь  в производительности труда.
            Но вот что странно во всех этих анализах, рекомендациях и концепциях.
Производительность труда рассматривается как-то отдельно от оплаты этого труда.
              Предлагаю сравнить не абстрактные цифры роста ВВП, а затраты труда, выраженные в виде заработанной платы, затраченной на единицу производительности труда.
            Поэтому давайте сравним оплату труда российских и американских работников при одинаковой производительности этого труда и решим, кто же в действительности работает производительнее.
                По оценке РАН в стоимости российского ВВП 82% составляет природная рента, 12% — амортизация промышленных мощностей, созданных еще в советское время, которые уже изнашиваются и создают новые техногенные угрозы и только 6% ВВП являются результатами производительного труда.
             ля сравнительного анализа, воспользуемся результатами расчета роста зарплаты работников различных отраслей, в период 2000-2015 гг., по  модели RIM Института народнохозяйственного прогнозирования. Вариант очень благоприятных условий привлечения иностранных инвестиций.
             Далее, предположив скорость роста зарплаты в период с 2015 года до 2020 года равной скорости роста в период с 2010 по 2015, получим следующие данные :
Горнодобывающая(угольная) промышленность и машиностроение – 1596 $( 9$/час) , наука – 2425$ (13 $/час), средняя зарплата по всем отраслям — 1265 $ (7.2 $/час).
           Фактически получился 2-х кратный рост зарплаты в период с 2010 года по 2020 год.
           Учитывая стремление нашего правительства в 4 раза повысить производительность труда к 2020 году, при прогнозе 2-х кратного роста зарплаты, сравним зарплату российского работника в 2020 году, когда его производительность труда станет равной производительности труда американского работника в 2000-2010 годах c зарплатой последнего.
            Как говорится: равный результат труда – равная оплата.
В настоящее время минимальная оплата труда в США составляет 7.25 $/час.           Очевидно, что это минимальная оплата любого неквалифицированного труда.
Так вот, получается, что в 2020 году при производительности труда равной американской, средняя оплата труда в отраслях российской экономики может приблизиться к зарплате самого неквалифицированного и необразованного работника в США.  
           Кроме того, по данным д-ра Джека Расмуса(Jack Rasmus), среднечасовая зарплата рабочего в отраслях экономики США в 2000 году составляла 16 $/час.
             Таким образом, получается, что в 2020 году при равной производительности труда, работник отраслей российских экономики будет получать за равный результат труда в 2.2 раза меньше, чем работник в США.
            Посмотрим, какой результат ожидает нас в конкретных отраслях.
По данным CostMine, средняя почасовая оплата в горнодобывающей промышленности США в 2010 году составляет 23 $ .
          По прогнозам  Института народнохозяйственного прогнозирования для российской промышленности эта величина в 2020 году составит 9$.
        Таким образом, за равный результат труда российские горняки получат в 2.5 раза меньше, чем  рабочие в США.
           Оценим теперь оплату труда в автомобильной промышленности. По данным прессы в декабре 2009 года работники ВАЗА получили среднюю зарплату в размере 23 тыс.рублей, что составляет 680 $ или 3.8 $/час.
          Предположим, что к 2020 году они повысят производительность труда в 4 раза , а их зарплата возрастет не до 7.6 $/час ( рост в 2 раза), а до уровня прогноза в машиностроении – 9 $/час.
            Обратимся к официальной информации мировых производителей автомобилей.
Средняя почасовая компенсация 2006 (US заработной платы и пособий) 

Ср. $/ час (США 2006): GM Ford Chrysler Toyota  Honda 
1. Заработная плата 39.68 28.88 29.15 24 24
2. Соотношение выгод 33.58 41.63 46.71 24 24
3. Вознаграждение (заработная плата и льготы) 73.26 70.51 75.86 48 48

            Для простоты расчета, будем учитывать лишь зарплату.
         Таким образом, российский работник в 2020 году – 9$/час, его коллега в США в 2006 году – 39$/час.  За равный результат труда – в 4 раза меньше оплата!
         Так в чем же истинная причина кажущейся низкой производительности труда?
           После развала СССР появилось много работ, доказывающих низкую эффективность производства  в СССР, в частности, в сельском хозяйстве.
          Например, в свиноводстве в США затраты корма составляют 3 кг на кг прироста, а в СССР, да и в современной России до 10 кг. Но эти исследования умалчивают, что эти 10 кг скармливали трем свиньям – одной государственной и двум личным. А в отчетах фигурировала только государственная свинья. Вот и получалось, что производительность в 3 раза ниже.
           В промышленности СССР на один учтенный автомобиль приходились затраты на два неучтенных танка, а на одну пару обуви – два автомата и ящик патрон.
           Сейчас происходит все тот же процесс выращивания трех свиней, а учет лишь одной. Прибыль предприятий выводится через торгово-снабженческие и посреднические структуры и списывается на их затраты или оседает на заграничных счетах, отмывается через покупку клубов и недвижимости за границей.
           Все также на производство одной единицы продукции списывается строительство загородных вилл и покупка дорогих яхт.
           Таким образом, получается, что миф о низкой производительности труда в действительности прикрывает реальность низкой оплаты труда работников при высоких доходах владельцев компаний.
           Тенденция стремительного роста доходов владельцев и топ-менеджеров не является российской привилегией. Так по данным д-ра Джека Расмуса в США в 1965 году руководитель компании получал в среднем в 26 раз выше, чем средний работник. В 1980 году — уже  в 40 раз. В 1989 году он получал уже в  72 раза больше. В 1999 году  доходы  руководителя увеличилась до 310 раз, и сегодня, как пример приводит  фирму Towers Perrin, это превышение достигло 500 раз.       Однако в России эта тенденция будет доведена до крайности.
             Не удивительно,  что собственность российских миллиардеров по оценкам СМИ составила 297 млард.$, а долги предприятий, которыми они управляют — более 500 млард.$.  Как говорил поэт: “ Где деньги, Зин ?”
           Вот и вся сказка о низкой производительности труда и высокой зарплате в РФ.